1.模拟教材实例,用java实现掌握使用 Socket 编程,容户机发送数据到服务器,服务器将接收到的数据返回给容户机的流程。
时间: 2024-03-10 07:45:45 浏览: 19
好的,这里提供一个简单的示例,演示如何使用Java的Socket编程实现客户端发送数据到服务器,服务器将接收到的数据返回给客户端的流程。
客户端代码:
```java
import java.net.*;
import java.io.*;
public class Client {
public static void main(String[] args) {
String hostName = "127.0.0.1"; // 服务器IP
int port = 8000; // 服务器端口号
try (Socket socket = new Socket(hostName, port);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
out.println("Hello, server!"); // 发送消息给服务器
String response = in.readLine(); // 接收服务器返回的消息
System.out.println("Received from server: " + response);
} catch (IOException e) {
System.err.println("IOException: " + e.getMessage());
}
}
}
```
在上面的代码中,我们首先创建了一个Socket对象,并将其连接到指定的服务器地址和端口号。然后,我们使用PrintWriter将要发送的消息写入到输出流中,并使用BufferedReader从输入流中读取服务器返回的响应数据。最后,我们打印出接收到的数据。
服务端代码:
```java
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) {
int port = 8000; // 服务器端口号
try (ServerSocket serverSocket = new ServerSocket(port);
Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))) {
System.out.println("Connected by " + clientSocket.getInetAddress().getHostAddress()); // 打印客户端地址信息
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Received from client: " + inputLine);
out.println(inputLine); // 将接收到的数据返回给客户端
}
} catch (IOException e) {
System.err.println("IOException: " + e.getMessage());
}
}
}
```
在上面的代码中,我们首先创建了一个ServerSocket对象,并将其绑定到指定的服务器端口号。然后,我们使用accept()方法开始监听客户端的连接请求,并调用getInputStream()方法和getOutputStream()方法分别获取客户端的输入流和输出流。在与客户端建立连接后,我们使用BufferedReader从输入流中读取客户端发送的数据,然后使用PrintWriter将接收到的数据返回给客户端。
注意,在上面的代码中,我们使用了一个while循环来不断地接收和处理客户端的请求,直到客户端主动关闭连接。
综上所述,以上代码演示了如何使用Java的Socket编程实现客户端发送数据到服务器,服务器将接收到的数据返回给客户端的流程。