0

我有两个“客户端”,一个“服务器”,可能还有一个实现可运行的“线程管理器”。

两个客户端通过 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.,但这似乎同样糟糕。任何人都可以提出解决方案,或者问题出在哪里(或两者兼而有之!):) 谢谢。

4

1 回答 1

1

Socket尝试从Thread.

于 2012-05-04T16:59:21.530 回答