关于UDP接收缓冲区的一点疑问~~~~~谢谢
之前发过一个帖子,如下,有人说 发送啥数据 接收的还是啥数据,于是我就结贴了,今天试了一下,发现接收到的数据的长度是设置的缓冲的长度,并不是发送过来的信息的长度。。。。我知道里面肯定有完整的数据,但是难道非要在头上加一个4个字节表示数据长度的信息才行吗?还有别的方法吗? 数据不能是定长的,但知道不会超过一个大小,因为我是分包发送的视频数据。。。。。。谢谢啦~~~ 或是有人知道用UDP发送视频 有什么更好的解决方案么?
刚开始学习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了?。。。。。
多谢各种指点~~~谢谢啦~~