刚开始学习socket编程。在UDP这一块有个小疑问,例如本人有一个客户端,用UDP来接收服务端发来的数据,看下面代码
DatagramSocket C_Socket = new DatagramSocket();
byte[] PacketB = new byte[1024];
DatagramPacket ReceivePacket = new DatagramPacket(PacketaB,PacketB.length);
C_Socket.receive(ReceivePacket);
//下面的各种代码。(抱歉这好像是java~ 不过没关系~ 语言都是共通的,原理都是一样的~~)
假如本人设置的接收包缓冲为1024,没有数据发过来的时候是一直处于阻塞状态的,假如服务端发过来的一条数据只有byte[512]这么大,不满1024,程序还是会解除阻塞状态往下执行? 还是要一直等到1024的缓冲满了之后才往下执行?(抱歉,实在不太懂啦)
假如只要接收到数据,不管多大都会往下执行,假如数据量不大的情况下,只要估算一下服务端发送数据最大会是多少,然后接收端的缓冲只要比他大就OK了?。
多谢各种指点~~~谢谢啦~~
DatagramSocket C_Socket = new DatagramSocket();
byte[] PacketB = new byte[1024];
DatagramPacket ReceivePacket = new DatagramPacket(PacketaB,PacketB.length);
C_Socket.receive(ReceivePacket);
//下面的各种代码。(抱歉这好像是java~ 不过没关系~ 语言都是共通的,原理都是一样的~~)
假如本人设置的接收包缓冲为1024,没有数据发过来的时候是一直处于阻塞状态的,假如服务端发过来的一条数据只有byte[512]这么大,不满1024,程序还是会解除阻塞状态往下执行? 还是要一直等到1024的缓冲满了之后才往下执行?(抱歉,实在不太懂啦)
假如只要接收到数据,不管多大都会往下执行,假如数据量不大的情况下,只要估算一下服务端发送数据最大会是多少,然后接收端的缓冲只要比他大就OK了?。
多谢各种指点~~~谢谢啦~~
解决方案:60分
只要有发送都会就向下执行,对方发多少你就收多少,与服务端一样的
当然超出的部份会丢失,至于丢多少要看你底层协议支持接收多少个字节了。
当然超出的部份会丢失,至于丢多少要看你底层协议支持接收多少个字节了。