繁体   English   中英

我可以使用两个不同的线程在同一个套接字上读写吗?

[英]Can I read and write on the same socket using two different threads?

我正在为一项任务写一个小东西,我必须管理主机之间的TCP连接。 我的目标本来是两个TCP连接,一个来电,一个外出,和一个非常复杂的协议来管理这些连接的创建和销毁。

那么,这是一个更简单的替代方案,我希望有效。 一个插座,易于连接,易于破坏。 一个线程将数据写入该套接字上的流,一个线程从同一个套接字上的流中读取。 我没有阻塞的问题,所以我不需要使用nio。

我可以做到这一点吗?

TCP套接字是一个全双工流,您可以从多个线程读取和写入它。 这样做是一个好主意是一个完全不同的问题。

如果你只有一个编写器线程和一个读者线程,它可能会产生更清晰和更简单的代码。

希望通过该套接字进行通信的其他线程会通过某个队列将请求传递给写入程序线程。 类似地,读者将通过队列将传入消息分派到适当的线程。

该技术通常用于用户界面。

据我所知,套接字是线程安全的。 从一个线程调用socket上的close()时,你应该小心。 第二个可以挂起一些阻塞功能或无限选择。

是的,你可以这样做。 您可以让1个线程使用ServerSocket启动服务器,使用Socket连接到此服务器的另一个线程。 您可以通过谷歌搜索EchoServer / EchoClient的大量示例来开始使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM