将Socket连接打开以便阅读是一种好习惯吗?

时间:2017-05-19 10:18:29

标签: java android sockets

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

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

1 个答案:

答案 0 :(得分:0)

这取决于您的实施。如果您使用的是被阻塞的套接字,那么您就不希望这样做了。这意味着如果您有多个客户端连接到服务器,他们将阻止所有其他客户端连接到该服务器套接字 您可以做的是让服务器套接字一直运行(像往常一样),然后使用客户端套接字连接到它,以检查和接收已到达的任何新消息。收到消息后,您可以关闭套接字。这可以每n秒执行一次 另一种选择是使用非阻塞套接字连接并始终保持打开但如果您有许多客户端,这可能会导致问题。