tcp

来源:互联网 发布:linux piwik 安装 编辑:程序博客网 时间:2024/05/18 14:42

    Tcp主要是面向连接的协议,建立连接要经过三次握手,客户端和服务端都要经过对方确认.建立好连接之后,双发便开始传递消息,这就好比打电话,双方要打通了才能说话。

  server端

    server端要做的就是建立一个端点,然后等待客户端发送请求。

    java中的实现方式是:

    1.创建一个ServerSocket的实例,并指定本地端口,这个端口就是客户端在连接的时候与之通信的端口

    2.循环等待用户连接:

  •        调用ServerSocket的accept()方法来获得客户端的连接请求。通过accept()方法返回的socket实例,这样就建立了一个和客户端的新连接。
  •       启动一个线程,把这个新连接和线程绑定
  •       把这个线程加入到线程池中,不断的监听客户端发来的数据

       try{
       serverSocket=new ServerSocket(50000);//启动服务器
       }catch(IOException e)
       {
           System.out.println("服务器没有启动。。。");
       }
       while(true)//循环等待用户连接
        {
           i++;
           try{
               CommunicationThread comm=new CommunicationThread(i,serverSocket.accept());//创建请求服务器的线程对象
             //  System.out.println("socket端口号:"+serverSocket.accept().getPort());
               communications.put(i,comm);//将线程放入线程池中
               comm.start();
           }catch(IOException e)
            {
               System.out.println("服务器读写异常!");
            }
        }

   客户端

     客户端的请求过程稍微有点不一样:

    1.构建Socket实例,通过指定的远程服务器地址和端口来建立连接。   

    2.通过Socket实例的InputStream方法和OutputStream方法来进行数据的读写。

    3.操作结束后调用socket实例的close方法,关闭。

  1. // 1.根据指定的server地址和端口,建立socket连接。  
  2. Socket socket = new Socket(server, servPort);  
  3.   
  4. // 2. 根据socket实例获取InputStream, OutputStream进行数据读写。  
  5. InputStream in = socket.getInputStream();  
  6. OutputStream out = socket.getOutputStream();  
  7. out.write(data);  
  8.   
  9. //3.操作结束,关闭socket.  
  10. socket.close();




     

     

0 0