2012-09-19 143 views
0

在基于AsynchronousServerSocketChannel和AsynchronousSocketChannel的服务器中,如何检查来自给定IP地址的连接是否已经存在?我想发送一个特定的消息给来自已经连接的IP地址的连接(要求它稍后再试;我正在处理非常特定的客户端局域网,如果共享而不是被迫由服务器序列化)。但是,我无法获得IP地址列表来搜索相同的IP地址是否已经有连接。除了将每个新连接的IP地址插入(并在关闭时删除它们)像ConcurrentSkipListSet之类的东西之外,是否还有更优雅/更有效的方法?此外,我想定期从所有打开的连接中收集一些网络统计信息(例如上传了多少个文件块)。我想出的有效方法是使用ConcurrentLinkedQueue将完成处理程序(块发送网络写入)的更新发送到信息收集线程,在任何时候将某个事件插入到队列中时唤醒线程。我假设唤醒操作是非阻塞的,但我不知道它可能有多昂贵,因为我确信至少它涉及到一个互锁的CPU指令(这意味着一个内存围栏并会进一步影响执行速度等等。)。还有其他建议吗?获取NIO.2服务器中客户端IP地址列表

回答

0

您将不得不维护自己的数据结构。所有的TCP将给你的是插座,你可以从中获得他们的远程地址和端口。

相关问题