繁体   English   中英

获取NIO.2服务器中客户端的IP地址列表

[英]Get list of clients' IP addresses in an NIO.2 server

在基于AsynchronousServerSocketChannel和AsynchronousSocketChannel的服务器中,如何检查给定IP地址的连接是否已存在? 我想向来自已连接IP地址的连接发送特定消息(请稍后再试;我正在处理非常特定的客户端LAN,如果共享而不是强制使用带宽,它们的带宽利用率很低。由服务器序列化)。 但是,我看不到要获取IP地址列表来搜索相同IP地址是否已经建立连接的方法。 除了将每个新连接的IP地址插入到类似ConcurrentSkipListSet之类的IP地址(并在关闭它们时将其删除)之外,还有其他更优雅/有效的方法吗?

此外,我想从所有打开的连接中定期收集一些网络统计信息(例如,已上传文件的多少块)。 我想有效执行此操作的唯一方法是使用ConcurrentLinkedQueue将完成处理程序(来自块发送网络写入)的更新发送到信息收集线程,并在每次将任何内容插入队列时唤醒线程。 我假设唤醒操作是非阻塞的,但我不知道它可能有多昂贵,因为我敢肯定至少它涉及一个互锁的CPU指令(这意味着内存栅栏并进一步影响了执行速度等等。)。 还有其他建议吗?

您将必须维护自己的数据结构。 所有的TCP都将为您提供套接字,您可以从中获取其远程地址和端口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM