java - Java中套接字的OutputStreamWriter和InputStreamReader,我做错了什么?
问题描述
Socket
在java中使用s,
public class Server {
private static ServerSocket server;
private static int port = 9876;
static Socket p1 = null;
static Socket p2 = null;
public static void main(String args[]) throws IOException, ClassNotFoundException{
server = new ServerSocket(port);
Thread p1t = new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("[Server] Waiting for connection");
p1 = server.accept();
System.out.println("[Server] Client connected");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(p1.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(p1.getInputStream()));
String msg = String.valueOf(in.readLine());
System.out.println(msg);
out.write(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
});
p1t.start();
}
}
和
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException, InterruptedException{
Socket socket = new Socket(InetAddress.getLocalHost().getHostName(), 9876);
if(socket.isConnected()) {
System.out.println("[Client] Connected");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
System.out.println(in.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
while(true) {
Scanner s = new Scanner(System.in);
out.write(s.nextLine());
}
}
}
}
客户端应该向服务器发送消息,服务器应该将该消息中继回客户端;但要么BufferedReader
forClient
并且Server
没有读取任何发送的内容,要么BufferedWriter
forClient
并且Server
没有发送任何内容。
我也尝试out.write("test");
在这两个类中使用手动发送文本。
在这种情况下我做错了什么?
解决方案
推荐阅读
- asp.net - 如何修复我的 ASP.NET Core 软件开发工具包
- c++ - 如何使用 Crypto++ 创建许可证密钥管理器(生成器和检查器)?
- sql - 在链接服务器的另一个存储过程中执行存储过程时出现问题
- pandas - 熊猫:需要在两列上找到唯一名称的数量
- bash - 添加一个整数和一个浮点数
- python - 在 django 应用启动时自动创建 Elasticsearch 索引
- c# - 如何保存在自定义检查器中更改的变量
- android - 如何使用数据绑定更改按钮的文本
- python - 如何以与静态类型检查兼容的方式实现接口?
- javascript - Query parameter to strip value that contains @ and