简单的TCP通信程序

TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)。

客户端实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class TestTCPClient {
public static void main(String[] args) throws IOException {
//1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
Socket socket = new Socket("127.0.0.1",8888);

//2.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象
OutputStream outputStream = socket.getOutputStream();

//3.使用网络字节输出流OutputStream对象中的方法write,给服务器发送数据
outputStream.write("你好服务器!".getBytes());

//4.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
InputStream inputStream = socket.getInputStream();

//5.使用网络字节输入流InputStream对象中的方法read,
byte[] bytes = new byte[1024];
int len = inputStream.read(bytes);
System.out.println(new String(bytes,0,len));

//6.释放资源(Socket)
socket.close();
}
}

服务器端实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class TestTCPServer {
public static void main(String[] args) throws IOException {
//1.创建服务器ServerSocket对象和系统要指定的端口
ServerSocket serverSocket = new ServerSocket(8888);

//2.使用ServerSocket对象中的方法accept,获取到请求客户端对象Socket
Socket socket = serverSocket.accept();

//3.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
InputStream inputStream = socket.getInputStream();

//4.使用网络字节输入流InputStream对象中的方法read,读取客户端发送的数据
byte[] bytes = new byte[1024];
int len = inputStream.read(bytes);
System.out.println(new String(bytes,0,len));

//5.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象
OutputStream outputStream = socket.getOutputStream();

//6.使用网络字节输出流OutputStream对象中的方法write,给客户端回写数据
outputStream.write("收到谢谢".getBytes());

//7.释放资源(Socket,ServerSocket)
socket.close();
serverSocket.close();
}
}

先运行服务器端,然后运行客户端。

服务器端收到客户端请求,然后读出并回复

1
2
3
你好服务器!

Process finished with exit code 0

客户端收到服务器端的回复并读出

1
2
3
收到谢谢

Process finished with exit code 0

这就是在本机上实现的一个简单的TCP通信