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

标签 java android sockets

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

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

最佳答案

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

关于java - 保持Socket连接打开以进行阅读是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44067439/

相关文章:

java - Jersey REST 客户端未创建数据库

javascript - Apache Thrift Java-Javascript 通信

java - 如何创建未知类型的实例?

android - 将日期时间从 Android 发送到 MySQL

android - 从 sleep 模式唤醒时不会播放音频 (android)

使用 select() 的 Python TCP 服务器

c++ - 在 C++ 中将字节字符串转换为普通字符串

java - 提高机器学习 JAVA 程序的速度

android - 如何从 Android 应用程序向 Mikrotik 发送登录凭据

file - 编程中流的底层原理是什么?