Java 保持插座连接打开以便阅读是一种好的做法吗?

Java 保持插座连接打开以便阅读是一种好的做法吗?,java,android,sockets,Java,Android,Sockets,我正在尝试构建一个Android IM,因为用户可能有来自其他人的新消息,我是否应该保持TCP连接打开并继续从中读取数据?e、 g while(!shutdown) { int count = socketChannel.read(buffer); // do something with buffer } 这取决于您的实现。如果您使用的是阻塞的套接字,那么您不会希望这样做。这意味着,如果有多个客户端连接到服务器,它们将阻止所有其他客户端连接到该服务器套接字。 您可以做的是让一

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

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

这取决于您的实现。如果您使用的是阻塞的套接字,那么您不会希望这样做。这意味着,如果有多个客户端连接到服务器,它们将阻止所有其他客户端连接到该服务器套接字。
您可以做的是让一个服务器套接字持续运行(正如您通常所做的那样),然后用一个客户端套接字连接到它,以检查和接收任何已到达的新消息。收到消息后,可以关闭套接字。这可以每n秒执行一次。

另一种选择是使用非阻塞的套接字连接并始终保持其打开状态,但如果您有许多客户端,这可能会导致问题

不清楚您还可以通过其他方式接收这些消息。@EJP,您在该网站上的活动令人惊讶,非常感谢。如果我没有从套接字获取任何数据,我是否最好先睡一会儿(例如100ms)?这会节省一些CPU吗?