• java Socket编程-基于TCP


    package com.wzy.Test;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    /**
     * 
     * @author wzy
     *服务器线程处理类
     */
    public class ServerThread extends Thread {
        //和本线程相关的Socket
        Socket socket;
        
        public ServerThread(Socket socket){
            this.socket = socket;
        }
        public void run(){
            PrintWriter pw=null;
            OutputStream out=null;
            BufferedReader br=null ;
            InputStreamReader isr=null;
            InputStream is=null;
            try{
                is = socket.getInputStream();//字节输入流
                //将字节流转换为字符流
                isr = new InputStreamReader(is);
                //为输入流添加缓冲
                br = new BufferedReader(isr);
                String info = "";
                String info1 = null;
                while((info = br.readLine())!=null){
                    //循环读取客户端信息
                    System.out.println("服务器接收到客户端的信息为:  "+info);
                    info1 = info;
                }
                
                System.out.println(info1);
                //关闭输入流
                socket.shutdownInput();
                //4获取输出流,响应客户端的请求
                out = socket.getOutputStream();
                pw = new PrintWriter(out);
                pw.write("你好,客户端,我是服务器!");
                pw.flush();
                //5.关闭资源
                
            }
            catch(Exception e){
                e.printStackTrace();
                
            }
            finally{
                try{
                    if(pw!=null){pw.close();}
                    if(out!=null){out.close();}
                    if(br!=null){br.close();}
                    if(isr!=null){isr.close();}
                    if(is!=null){is.close();}
                    if(socket!=null){socket.close();}
                
                }
                catch(IOException e){
                    e.printStackTrace();
                }
                }
            
        }
    }
    package com.wzy.Test;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    /**
     * 
     * @author wzy
     *服务器
     */
    
    public class Server {
        public static void main(String[] args) {
            int count = 0;
            //for(int a = 0;a<5;a++){
            try {
                //1.创建一个服务器端socket,即ServerSocket,指定绑定的端口,并监听
                ServerSocket serverSocket = new ServerSocket(8888);//监听8888端口
                System.out.println("服务器等待客户端连接....");
                //2.调用accept开始监听,等待客户端连接
                Socket socket =null;
                while(true){
                    socket = serverSocket.accept();//接受
                    ServerThread serverThread = new ServerThread(socket);
                    serverThread.start();
                    System.out.println("客户连接数量:"+(++count));
                    InetAddress address = socket.getInetAddress();
                    System.out.println("客户端ip:"+address.getHostAddress());
                    
                }/*
                //3.获取输入流,并读取客户端信息
                InputStream is = socket.getInputStream();//字节输入流
                //将字节流转换为字符流
                InputStreamReader isr = new InputStreamReader(is);
                //为输入流添加缓冲
                BufferedReader br = new BufferedReader(isr);
                String info = "";
                String info1 = null;
                while((info = br.readLine())!=null){
                    //循环读取客户端信息
                    System.out.println("服务器接收到客户端的信息为:  "+info);
                    info1 = info;
                }
                
                System.out.println(info1);
                //关闭输入流
                socket.shutdownInput();
                //4获取输出流,响应客户端的请求
                OutputStream out = socket.getOutputStream();
                PrintWriter pw = new PrintWriter(out);
                pw.write("你好,客户端,我是服务器!");
                pw.flush();
                //5.关闭资源
                pw.close();
                out.close();
                br.close();
                isr.close();
                is.close();
                socket.close();
                serverSocket.close();*/    
            } catch (Exception e) {
                
                e.printStackTrace();
            }
            }
    //}
    }
    package com.wzy.Test;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    /**
     * 
     * @author wzy
     *客户端
     */
    public class Client {
        public static void main(String[] args) {
            
            try {
                //1.创建客户端socket,指定服务器地址和端口
                Socket socket = new Socket("127.0.0.1", 8888);
                //2.获取输出流,向服务器发送信息
                OutputStream os = socket.getOutputStream();//字节输出流
                PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
                pw.write("hello,服务器!!!,我是客户端");
            
                pw.flush();//刷新缓存
                socket.shutdownOutput();//关闭输出流
                //3.获取输入流,读取服务器的响应
                InputStream in = socket.getInputStream();
                InputStreamReader inr = new InputStreamReader(in);
                BufferedReader brr = new BufferedReader(inr);
                String info = null;
                while((info =brr.readLine())!=null){
                    System.out.println("客户端接到服务器的消息:  "+info);
                    
                }
                brr.close();
                inr.close();
                in.close();
                
                //4.关闭资源
                pw.close();
                os.close();
                socket.close();
                
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    触摸屏网站开发系列(一)-ios web App应用程序(ios meta)
    jQuery Mobile 入门教程
    html的视频插件 (转)
    网页布局流式布局
    2.05-random-uesr-proxy
    2.04-proxy-handler
    2.03-handler_openner
    2.02-request_header_two
    2.01-request_header
    1.03-get_params2
  • 原文地址:https://www.cnblogs.com/wwzyy/p/6040841.html
Copyright © 2020-2023  润新知