我有两个“客户端”,一个“服务器”,可能还有一个实现可运行的“线程管理器”。
两个客户端通过 TCP 与服务器连接并参与协议握手/身份验证(成功),然后我尝试将现有的 BufferedReaders、DataOutputStreams 和 Sockets 传递给“ThreadManager”以管理 Client1 和 Client2 之间的线程消息:
服务器:
ThreadManager tManager = new ThreadManager(serviceToClient1, inputStream, outputStream, serviceToClient2, inputStream2, outputStream2);
new Thread(tManager).start();
serviceToClient1.close();
serviceToClient2.close();
线程管理器:
public ThreadManager(Socket cli1, BufferedReader inputStream, DataOutputStream outputStream, Socket cli2, BufferedReader inputStream2, DataOutputStream outputStream2)
{
this.cli1 = cli1;
this.inputStream = inputStream;
this.outputStream = outputStream;
this.cli2 = cli2;
this.inputStream2 = inputStream2;
this.outputStream2 = outputStream2;
}
此构造成功,但是在.start()
从服务器调用时,一旦从 ThreadManager 中调用以下命令,调试就会显示“套接字异常:套接字已关闭”错误:
outputStream.writeBytes("NUMBER: " + i + "\n");
我不确定问题出在哪里,我是否需要从 ThreadManager 中关闭连接并重新创建套接字和流读取器/写入器?我尝试只在 ThreadManager 构造函数中传递套接字,然后创建new BufferedReader... etc.
,但这似乎同样糟糕。任何人都可以提出解决方案,或者问题出在哪里(或两者兼而有之!):) 谢谢。