我正在尝试构建一个Android IM,因为用户可能收到来自其他人的新消息,我应该保持TCP连接打开并继续从中读取数据吗?例如
while(!shutdown) {
int count = socketChannel.read(buffer);
// do something with buffer
}
最佳答案
这取决于您的实现。如果您使用的是受阻止的套接字,那么您就不想这样做。这意味着如果您有多个客户端连接到服务器,则它们将阻止所有其他客户端连接到该服务器套接字。
您可以做的是使服务器套接字始终运行(如通常那样),然后使用客户端套接字连接到服务器套接字,以检查并接收到达的任何新消息。收到消息后,您可以关闭套接字。这可以每n秒执行一次。
另一种选择是使用无阻塞的套接字连接,并始终保持它们打开,但是如果您有很多客户端,这可能会导致问题。
关于java - 保持Socket连接打开以进行阅读是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44067439/