.使用socket完成,客户端发送信息,服务器接收信息(使用字符缓冲流收发数据)
时间: 2024-01-21 19:19:36 浏览: 26
以下是一个简单的示例代码,演示了如何使用socket完成客户端发送信息,服务器接收信息(使用字符缓冲流收发数据)的功能。
服务端代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started, waiting for client...");
Socket socket = serverSocket.accept();
System.out.println("Client connected: " + socket.getInetAddress());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println("Received message from client: " + line);
}
reader.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
System.out.println("Connected to server: " + socket.getInetAddress());
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
String line;
while ((line = reader.readLine()) != null) {
writer.println(line);
}
writer.close();
reader.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在控制台中启动服务端和客户端程序,客户端输入信息后回车发送,服务端会接收到并输出。
需要注意的是,这里使用了字符缓冲流(BufferedReader和PrintWriter),可以方便地读写字符串数据。同时,为了保证数据的完整性,使用了while循环不断读取数据,直到读到null为止。