我正在开发一个基于套接字的 clientType1 - Server - clientType2 程序。
clientType1仅向服务器发送数据(实际上是文件),服务器将数据中继到clientType2。
clientType1、Type2可以是多个。
问题是,如果两个以上 clientType1 尝试同时向一个 clientType2 发送文件,clientType2 将无法检索这两个文件中的任何一个。
我想我知道为什么会发生这种情况。这是因为服务器上的两个线程尝试同时写入同一个套接字。我怎样才能解决这个问题?
最佳答案
通过让客户端服务线程写入一个队列,另一个线程读取队列并将数据写入套接字(队列必须是线程安全的)。这是最简单的解决方案之一。
另一种方法是共享套接字并从 synchronized{}
block 访问它(我假设您了解 Java 中的同步原语)。
关于java套接字如何从两个不同的线程发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28189040/