使用java开发TCP服务器端
目的:验证TCP调试工具与自研的TCP服务端通信是否正常
1、使用Eclipse新建一个java项目,命名TcpServer
2、新建与服务端连接的客户端socket处理类,采用线程方式,一个客户端连接对应一个线程。
package com.ppx.tcp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class TcpClientHandler extends Thread { private Socket clientSocket; private PrintWriter out; private InputStream in; public TcpClientHandler(Socket socket) { this.clientSocket=socket; } public void run() { try { out = new PrintWriter(clientSocket.getOutputStream(),true); in = clientSocket.getInputStream(); while(true) { String inputLine=""; byte[] temp = new byte[1024]; int length = in.read(temp); inputLine+=new String(temp,0,length); if(".".equals(inputLine)) { out.println("bye"); break; } out.println(inputLine); } in.close(); out.close(); clientSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
3、新建服务端socket处理类
package com.ppx.tcp; import java.io.IOException; import java.net.ServerSocket; public class TcpMultiServer { private ServerSocket serverSocket; public void start(int port) throws IOException { serverSocket = new ServerSocket(port); while(true) { new TcpClientHandler(serverSocket.accept()).start(); } } public void stop() throws IOException { serverSocket.close(); } }
4、新建测试类,并启动服务器
package com.ppx.tcp; public class TcpMain { public static void main(String[] args) throws Exception { new TcpMultiServer().start(55559); } }
5、下载TCP客户端调试工具,地址:
6、打开客户端工具,并设置目的ip和目的端口,然后打开连接,可以看到连接成功的信息。
7、发送消息给服务端,发送“123”给服务端,客户端能收到服务端回的“123”的消息,说明双向通信是正常的。
8、然后发送“.”给服务端,能收到“bye”的消息,并断开客户端的连接。
总结:TCP支持双向通信,并提供可靠的连接,效率不如UDP高,UDP提供不可靠的连接,消息内容易丢失,所以传输效率非常高。