Java Socket 全双工

3
能否使用一个套接字连接在服务器和客户端之间进行双向数据发送?我的意思是服务器和客户端都可以同时读写(每个进程中有2个线程)。请注意,我需要“真正”的双向通信,而不是请求/响应类型的通信。服务器和客户端都必须能够同时写入。
编辑2:天哪!它起作用了。愚蠢的我在读取器线程中写了一个死锁! :) 谢谢

不确定您是否在询问此内容,但它至少与您相关并且可能会引起您的兴趣:另一个Java套接字全双工问题 - Mark Wilkins
你有示例怎么做吗?我需要这样的东西。 - Diyko
2个回答

1

是的,似乎在双方都使用线程来发送和接收。因此一个套接字连接可以完成这个任务。


1
TCP连接是一个全双工的字节流,因此,是的,你可以同时从同一个套接字读取和写入数据,尽管你并不一定需要使用线程来进行双向通信。

1
我需要“真正”的双向通信,而不是请求/响应类型的通信。客户端和服务器都必须能够同时写入。 - Stig
1
没有线程,你无法实现全双工功能。你要么可以发送,要么可以等待响应。你不能同时做这两件事情。因此,如果没有线程,它将是半双工的。在任何给定的时间,一个人只能发送或接收(或等待接收)。 - nIcE cOw
我会以线程方式运行它。此外,当没有可读内容时,会出现交错问题(尽管可以通过超时来处理)。 - Stig
唉...这些年轻人啊...你们的套接字不必阻塞,而且很多高性能网络应用程序都是没有线程编写的。 - Nikolai Fetissov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接