目的:验证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客户端调试工具,地址:http://www.zlmcu.com/download/SocketTest.zip
6、打开客户端工具,并设置目的ip和目的端口,然后打开连接,可以看到连接成功的信息。
7、发送消息给服务端,发送“123”给服务端,客户端能收到服务端回的“123”的消息,说明双向通信是正常的。
8、然后发送“.”给服务端,能收到“bye”的消息,并断开客户端的连接。
总结:TCP支持双向通信,并提供可靠的连接,效率不如UDP高,UDP提供不可靠的连接,消息内容易丢失,所以传输效率非常高。