使用bufferreader 和write的socket实例
时间: 2024-03-24 07:39:31 浏览: 50
BufferedReader 和BufferedWriter 实例
好的,以下是一个使用 `BufferedReader` 和 `Writer` 的 Java Socket 实例:
```java
import java.net.*;
import java.io.*;
public class SocketExample {
public static void main(String[] args) {
String hostname = "localhost"; // 服务器地址
int port = 8080; // 服务器端口号
try {
System.out.println("连接到服务器:" + hostname + ",端口号:" + port);
Socket clientSocket = new Socket(hostname, port); // 创建客户端 Socket
System.out.println("远程主机地址:" + clientSocket.getRemoteSocketAddress());
// 获取客户端输出流
OutputStream outToServer = clientSocket.getOutputStream();
// 将输出流包装为 Writer,方便写入字符串
Writer writer = new OutputStreamWriter(outToServer, "UTF-8");
// 创建 BufferedReader 用于读取服务器响应
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// 向服务器发送消息
writer.write("Hello from " + clientSocket.getLocalSocketAddress() + "\n");
writer.flush(); // 刷新缓冲区
// 读取服务器响应
String response = reader.readLine();
System.out.println("服务器响应:" + response);
clientSocket.close(); // 关闭客户端 Socket
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
上述代码中,我们首先创建了一个客户端 Socket,并获取其输出流。然后,我们将输出流包装为 `Writer`,方便写入字符串。接着,我们创建了一个 `BufferedReader` 用于读取服务器响应。然后,我们向服务器发送消息,将消息写入输出流并刷新缓冲区。最后,我们读取服务器响应并打印出来。注意,这里我们使用了 `readLine()` 方法,因此服务器响应中必须包含换行符,否则 `readLine()` 方法将会一直阻塞等待。
和前面的例子类似,这只是一个简单的示例,实际应用中还要考虑异常处理、多线程等因素。
阅读全文