|
|
1
1
我建议您检查select()方法的返回值。
你试过调试看看循环在哪里吗? 编辑:
|
|
|
2
1
|
|
|
3
1
您可能得到一个IOException,并在空catch块中忽略它。 做那件事。在IOException之后继续实际上永远都不是正确的操作。我能马上想到的唯一例外是SocketTimeoutException,而且您处于非阻塞模式,所以您不会得到这些,而且无论如何也不会在选择器上得到它们。我想看看处理connect、accept、read和write的方法的内容。 |
|
|
4
0
当使用一个线程处理多个TCP套接字上的传入消息时,应使用选择器。向选择器注册每个套接字,然后
Java有很好的本机线程支持,而C没有。我认为每个TCP套接字有一个线程而不使用选择器更有意义。如果只是对套接字执行读取操作,则线程将阻塞,直到数据到达或套接字关闭。这实际上与只使用一个注册通道进行选择是一样的。
如果您想让它只与一个线程一起工作,那么应该只对需要传入连接的TCP套接字使用选择器。这样,唯一一次
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |