繁体   English   中英

保持Socket连接打开以进行阅读是一种好习惯吗?

[英]Is it a good practice to keep a Socket connection open for reading?

我正在尝试构建一个Android IM,因为用户可能会收到来自其他人的新消息,是否应该保持TCP连接打开并继续从中读取数据? 例如

while(!shutdown) {
    int count = socketChannel.read(buffer);
    // do something with buffer
}

这取决于您的实现。 如果您使用的是受阻止的套接字,那么您就不想这样做。 这意味着如果您有多个客户端连接到服务器,它们将阻止所有其他客户端连接到该服务器套接字。
您可以做的是使服务器套接字始终运行(与通常情况一样),然后使用客户端套接字连接到它,以检查并接收到达的任何新消息。 收到消息后,您可以关闭套接字。 可以每n秒执行一次。
另一个选择是使用无阻塞的套接字连接并始终保持它们打开,但是如果您有很多客户端,这可能会导致问题。

暂无
暂无

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

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