DatagramChannel 的receive方法能同时接收多个客户端发来的数据吗 本帖最后由 igoqhb 于 2014-05-24 14:39:24 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序偶尔会出现同时接收到多个数据包的情况,不过大多情况下是来自同一个客户端,所以就是同一个IP和端口。如果同时接受到了多个客户端的数据包,SocketAddress client_addr = cc.receive(buffer); 是不是只能记录一个IP和端口呢?不知道这样的情况会不会出现 程序偶尔会出现同时接收到多个数据包的情况,不过大多情况下是来自同一个客户端,所以就是同一个IP和端口。如果同时接受到了多个客户端的数据包,SocketAddress client_addr = cc.receive(buffer); 是不是只能记录一个IP和端口呢?不知道这样的情况会不会出现每次receive只会接收一个DatagramPacket,也就是来自同一个客户端的数据,如果你的buffer太小,那么多出的数据会直接舍弃。 首先,一个UDP报文里面放置的,只有一个主机中,一个进程内发出的一个消息。其次,我们可以通过UDP报文中的IP地址和端口号组合(也就是Socket)来区别消息的来源(不同的客户端程序)。第三,接收消息的方式,要注意同步阻塞式的接收还是异步非阻塞式的接收,两者的逻辑会有些区别。 如何排除指定范围的随机数 java小通信录的一个错误 添加数据代码 求教XP系统如何设置路径??? 谁能使用JAVA翻译下列C代码? 关于JAVA的JIT 关于Gird的问题 在问关于引用类的问题! 对数据库进行删除操作。 jb6 import com.borland 的问题 关于对象存放出现的问题 求助:用JHepWork做非线性拟合报错:“/ is a folder”
程序偶尔会出现同时接收到多个数据包的情况,不过大多情况下是来自同一个客户端,所以就是同一个IP和端口。如果同时接受到了多个客户端的数据包,SocketAddress client_addr = cc.receive(buffer); 是不是只能记录一个IP和端口呢?不知道这样的情况会不会出现
程序偶尔会出现同时接收到多个数据包的情况,不过大多情况下是来自同一个客户端,所以就是同一个IP和端口。如果同时接受到了多个客户端的数据包,SocketAddress client_addr = cc.receive(buffer); 是不是只能记录一个IP和端口呢?不知道这样的情况会不会出现
每次receive只会接收一个DatagramPacket,也就是来自同一个客户端的数据,如果你的buffer太小,那么多出的数据会直接舍弃。
其次,我们可以通过UDP报文中的IP地址和端口号组合(也就是Socket)来区别消息的来源(不同的客户端程序)。
第三,接收消息的方式,要注意同步阻塞式的接收还是异步非阻塞式的接收,两者的逻辑会有些区别。