基于TCP实现的Socket通讯详解

Socket通信是基于TCP协议进行的传输层通信,是在应用和应用之间的通信,一般应用在即时通讯上。

建立连接

用Socket创建连接需要在客户端和服务端都使用socket套接字。

Linux内存创建Socket,只是创建的socket使用有些差异。

public class EchoServer{
         private int port;
         Socket socket;
         public EchoServer(int port){
             this.port = port;  

        }  
       
         private void run() throws IOException{
            
             ServerSocket serverSocket = new ServerSocket(7890);
             while(true){
                socket = serverSocket.accept();
                new Thread(()->{
                    write(socket);
                }).start();

             }
            
             

        }

        private void write(Socket socket){
             InputStream in =  new InputStream(socket);  
             OutputStream out = new OutputStream();
             int n ;
             byte[]  b = new byte[1024];
             while((n=in.read(b))>0){
                   out.write(b,0,b.length);
             } 
        }

}                                         

  

public class EchoClient{
     private Socket socket;
    
     private void write(socket){
          InputStream in = new InputStream(socket);
          OutputStream out = new OutputStream();
          int n ;
          byte[] b = new byte[1024];
          while((n=in.read(b))>0){
             System.out.write(b,0,b.length);
         }
     }


     public void static main(String[] args){
           Socket socket = new Socket("localhost",7890);
           
           write(socket);           
     }
    
}

  

一种Socket的用处是监听,叫做ServerSocket,这种Socket会调用listen的方法,监听连接上的套接字。

另一种socket的用处是连接,它调用connect方法,作用为服务端和客户端的通讯连接套字。

一个完整的TCP通信,在服务端和客户端总计创建三个socket。

一个监控的socket在服务端监控连接成功的客户端套接字,并在接收连接后产生一个连接的socket.

一个连接的socket在客户端请求发起连接。

猜你喜欢

转载自www.cnblogs.com/gzhich2019/p/11899128.html
今日推荐