import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
// 创建一个服务器套接字,并绑定到指定端口(例如1234)
serverSocket = new ServerSocket(1234);
System.out.println("Server started. Listening on port 1234");
while (true) {
// 等待客户端连接
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected");
// 获取输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// 读取客户端发送的消息
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Received: " + inputLine);
// 回显消息给客户端
out.println("Echo: " + inputLine);
}
// 关闭资源
in.close();
out.close();
clientSocket.close();
}
} catch (IOException e) {
System.err.println("Exception caught when trying to listen on port 1234 or listening for a connection");
System.err.println(e.getMessage());
} finally {
if (serverSocket != null && !serverSocket.isClosed()) {
try {
serverSocket.close();
} catch (IOException e) {
System.err.println("Could not close server socket");
System.err.println(e.getMessage());
}
}
}
}
}
public class TCPClient {
public static void main(String[] args) {
Socket socket = null;
try {
// 连接到服务器(假设服务器在同一台机器上,使用localhost)
socket = new Socket("localhost", 1234);
System.out.println("Connected to server");
// 获取输入输出流
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
// 发送用户输入的消息到服务器
out.println(userInput);
// 读取服务器回显的消息
System.out.println("Echo from server: " + in.readLine());
}
} catch (UnknownHostException e) {
System.err.println("Don't know about host");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to localhost");
System.exit(1);
} finally {
if (socket != null && !socket.isClosed()) {
try {
socket.close();
} catch (IOException e) {
System.err.println("Could not close client socket");
System.err.println(e.getMessage());
}
}
}
}
}
TCPServer 类:
ServerSocket
对象并绑定到指定端口(如1234),开始监听来自客户端的连接请求。accept()
方法等待客户端连接。一旦有客户端连接,创建一个新的 Socket
对象来处理通信。BufferedReader
和 PrintWriter
分别读取和写入数据。Socket
。TCPClient 类:
Socket
对象并连接到服务器(假设服务器在同一台机器上,使用 localhost
)。PrintWriter
和 BufferedReader
分别发送和接收消息。Socket
。以上代码展示了如何使用 Java 实现简单的 TCP/IP 套接字编程,包括服务器端和客户端的基本功能。
上一篇:java获取服务器ip
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站