首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在单线程中使用两个套接字吗?

我可以在单线程中使用两个套接字吗?
EN

Stack Overflow用户
提问于 2015-09-07 05:12:46
回答 2查看 54关注 0票数 0

我在开发包括文件共享的聊天应用程序时遇到了麻烦。这是一个基于服务器和客户端的桌面应用程序,我能够单独开发聊天和文件共享。现在我想合并两个项目,并有问题。有没有可能在单线程中使用多个套接字,比如main thread.Or我必须使用一个用于聊天,另一个用于文件sharing.Please帮助我。

EN

回答 2

Stack Overflow用户

发布于 2015-09-07 05:29:47

我认为这是可能的,但在同一线程中,一个套接字的操作必须等待来自annother的所有操作完成。如果您希望同时执行这两个操作,请在不同的线程中执行。希望这能有所帮助:)

票数 1
EN

Stack Overflow用户

发布于 2021-12-11 03:58:25

是的,单个线程可以使用多个套接字。请参阅Selector API.

基本思想是,线程中的代码需要知道它需要读取或写入的所有可选通道(套接字、打开的文件等)。它向选择器注册通道。然后,您进行select调用,该调用将(例如)阻塞,直到注册的通道之一就绪;例如,具有现在可以读取的数据的套接字……而不会阻塞。

这很复杂,但我建议你读读贝尔登的Introduction to the Java NIO Selector,其中包括一个例子,而不是在这里解释所有的东西。

但底线是,使用Selector可能需要对现有代码进行重大重组。如果您的代码使用(例如)第三方库来执行I/O,则此方法可能不起作用。使用多线程可能是一个更简单的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32428359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档