java Tcp通信客户端与服务器端实例
TCP是一种基于连接的协议,可以确保数据的可靠传输。在网络应用中,TCP通信被广泛应用于客户端与服务器端之间的通信。本文将介绍Java编写的TCP通信客户端与服务器端实例,并演示如何通过TCP实现两者之间的通信。
服务器端实现
首先,我们需要编写服务器端代码。服务器端负责监听端口并接受客户端连接。一旦连接建立,服务器端会处理来自客户端的请求,并返回相应的结果。下面是服务器端的代码实现:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);//监听端口号8888
System.out.println("服务器已启动,等待客户端连接...");
Socket socket = serverSocket.accept(); //接受客户端的连接
System.out.println("客户端已连接:" + socket.getInetAddress());
//计算从客户端接收到的数据
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String input = br.readLine();
int result = Integer.parseInt(input) * 2;
System.out.println("服务器接收到数据:" + input);
//将计算结果发送给客户端
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
pw.println(result);
pw.flush();//刷新缓存
System.out.println("服务器发送数据:" + result);
//关闭连接
br.close();
pw.close();
socket.close();
serverSocket.close();
System.out.println("服务器已关闭。");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在代码中,我们创建一个ServerSocket对象并将其绑定到端口8888上。然后,我们使用accept()方法等待客户端连接。如果有客户端连接,则accept()方法将返回一个Socket对象,表示与客户端建立的连接。接着,我们通过BufferedReader对象读取客户端发送的数据,这里使用的是readLine()方法。然后,我们计算结果并将结果发送给客户端,这里使用的是PrintWriter对象和println()方法。最后,我们关闭连接。
客户端实现
接下来,我们需要编写TCP通信的客户端代码。客户端会建立与服务器的连接,并向服务器发送数据请求。服务器会处理请求并返回结果给客户端。下面是客户端的代码实现:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888); //连接服务器
System.out.println("已连接服务器:" + socket.getInetAddress());
//向服务器发送数据
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
pw.println(10);
pw.flush();
System.out.println("客户端发送数据:" + 10);
//接收服务器返回的数据
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String input = br.readLine();
System.out.println("客户端接收到数据:" + input);
//关闭连接
pw.close();
br.close();
socket.close();
System.out.println("客户端已关闭。");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在代码中,我们创建一个Socket对象并使用它连接到服务器。这里使用的是localhost作为主机名,表示连接到本地的服务器。然后,我们使用PrintWriter对象发送数据到服务器,这里的数据是10。接着,我们通过BufferedReader对象读取服务器返回的数据,这里使用的是readLine()方法。最后,我们关闭连接。
运行结果
在运行前,需要先启动服务器端的代码,然后再运行客户端的代码。
客户端运行结果如下:
已连接服务器:localhost/127.0.0.1 客户端发送数据:10 客户端接收到数据:20 客户端已关闭。
服务器端运行结果如下:
服务器已启动,等待客户端连接... 客户端已连接:/127.0.0.1 服务器接收到数据:10 服务器发送数据:20 服务器已关闭。
结论
通过以上的实例,我们可以看到TCP协议的应用实例,其中服务器端通过ServerSocket监听端口,然后等待客户端连接。而客户端通过Socket连接服务器,向服务器发送请求并接收服务器的响应。这种通信方式可以确保数据的可靠传输,并且支持双向通信。TCP通信作为一种网络通信协议,在实际的应用中被广泛使用。
