求解:java nio方式完成socket通信可否实现服务端向某个固定的客户端发送消息并接受客户端返回的结果?
现在有这样的需求:多个客户端与服务端进行socket通信,根据业务需求,当满足某个条件的时候,服务端发送的消息只让指定的客户端接受这个消息,而其他客户端不能接受这个消息,举个例子,比如现在有ip为192.168.1.15、192.168.1.16、192.168.1.17的三个客户端连接到服务端,而当满足业务条件A时,服务端发送的消息只能让ip为192.168.1.16的客户端接收到,并返回响应结果给服务端,而这条消息不向另外两个客户端发送。
这样的需求用java NIO可否实现,如果可以实现,具体该怎么实现?如果不能实现,那么有没有别的方式可以实现这样的通信需求?
望各位达人指点!小弟不胜感激。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
引用来自“purely”的评论
通过ip,获取对应的channel,就可以向指定的channel发送了。
通过ip,获取对应的channel,就可以向指定的channel发送了。
NIO只是一种"轮询"方式,底层还是用的TCP/IP模型.AIO也是一样的.
这些都只是实现方式而已,跟你说的,完全不是一个事.
只要你维持会话,你自然可以选择发送目标.
引用来自“mingshun”的评论
跟哪个IP连接就发给这个IP对应的机器咯,这个问题是不是问得有点奇怪啊?向与A机器建立的socket发送数据,B机器能收到?根据条件判断要发给哪个机器,就向与哪个机器建立的socket发数据就行啦!
引用来自“ksfzhaohui”的评论
只要服务器端维护了连接列表,想往哪个客户端发送,从列表里面筛选就是了,至于要不要用nio,完全看你的需求,socket连接也能实现
跟哪个IP连接就发给这个IP对应的机器咯,这个问题是不是问得有点奇怪啊?向与A机器建立的socket发送数据,B机器能收到?根据条件判断要发给哪个机器,就向与哪个机器建立的socket发数据就行啦!
楼上正解。不过服务端偷懒一点就全发,客户端去判断是不是给自己的消息,不是就抛弃。当然这是最糟糕的设计,安全,流量都会有问题。
只要服务器端维护了连接列表,想往哪个客户端发送,从列表里面筛选就是了,至于要不要用nio,完全看你的需求,socket连接也能实现
引用来自“若水191”的评论
首先是socket通信问题,其次才是nio问题,通信是双向的。往哪个客户端发消息,服务器端是主动的,这问题基本都不存在
首先是socket通信问题,其次才是nio问题,通信是双向的。往哪个客户端发消息,服务器端是主动的,这问题基本都不存在