用java写一个socket互相通信
时间: 2023-09-09 21:08:43 浏览: 47
当然可以!以下是一个简单的示例,展示了如何使用Java编写一个基本的Socket通信程序。
```java
// 服务端代码
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(9999);
System.out.println("等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端已连接!");
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
String message;
while ((message = reader.readLine()) != null) {
System.out.println("客户端消息: " + message);
writer.println("服务器已接收到消息: " + message);
}
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
```java
// 客户端代码
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 9999);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
String message;
while ((message = consoleReader.readLine()) != null) {
writer.println(message);
System.out.println("服务器回复: " + reader.readLine());
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上述示例中,服务器监听本地的9999端口,并等待客户端连接。一旦客户端连接成功,服务器将读取客户端发送的消息,并将其打印到控制台上。同时,服务器也会将消息发送回客户端。
客户端代码连接到服务器的localhost地址和9999端口。它从控制台读取用户输入的消息,并将消息发送到服务器。然后,客户端从服务器接收回复并将其打印到控制台上。
请注意,此示例只是一个简单的演示,可能不适用于生产环境。在实际应用中,您可能需要处理更复杂的通信逻辑、异常情况和多线程等问题。