使用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客户端调试工具,地址:http://www.zlmcu.com/download/SocketTest.zip

6、打开客户端工具,并设置目的ip和目的端口,然后打开连接,可以看到连接成功的信息。

 7、发送消息给服务端,发送“123”给服务端,客户端能收到服务端回的“123”的消息,说明双向通信是正常的。 

8、然后发送“.”给服务端,能收到“bye”的消息,并断开客户端的连接。

 总结:TCP支持双向通信,并提供可靠的连接,效率不如UDP高,UDP提供不可靠的连接,消息内容易丢失,所以传输效率非常高。

猜你喜欢

转载自blog.csdn.net/dandingwangzi/article/details/125956663