使用Java提供的Socket,建立客户端和服务器,编写程序,实现两者相互通信。
时间: 2024-04-09 17:27:36 浏览: 14
好的,我可以帮你解答这个问题。下面是一个简单的示例代码,展示了如何使用Java提供的Socket建立客户端和服务器,并实现两者之间的通信。
首先是服务器端的代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
// 监听客户端的连接请求
System.out.println("服务器已启动,等待客户端连接...");
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接!");
// 获取输入流和输出流
InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = clientSocket.getOutputStream();
// 创建字符输入流和输出流
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
// 读取客户端发送的数据
String clientMsg = reader.readLine();
System.out.println("客户端消息:" + clientMsg);
// 向客户端发送数据
String serverMsg = "Hello, client!";
writer.write(serverMsg);
writer.newLine();
writer.flush();
System.out.println("服务器消息:" + serverMsg);
// 关闭流和Socket连接
reader.close();
writer.close();
clientSocket.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对象,指定服务器的IP地址和端口号
Socket socket = new Socket("localhost", 8888);
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 创建字符输入流和输出流
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
// 向服务器发送数据
String clientMsg = "Hello, server!";
writer.write(clientMsg);
writer.newLine();
writer.flush();
System.out.println("客户端消息:" + clientMsg);
// 读取服务器返回的数据
String serverMsg = reader.readLine();
System.out.println("服务器消息:" + serverMsg);
// 关闭流和Socket连接
reader.close();
writer.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码仅为示例,实际应用中可能需要进行异常处理、多线程处理等。希望能对你有所帮助!