Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UDP消息大小差异_Udp_Sendto_Recvfrom - Fatal编程技术网

UDP消息大小差异

UDP消息大小差异,udp,sendto,recvfrom,Udp,Sendto,Recvfrom,假设A向B发送大小为N的UDP消息,如 sockaddr_in to; to.sin_family=AF_INET; to.sin_port=htons(port); to.sin_addr.s_addr=inet_addr(address); sendto(sock,(const char*)buffer,N,0,(sockaddr*)&to,sizeof(to)); 现在B收到此消息,希望其大小为N_1 sockaddr from; socklen_t length_from=si

假设A向B发送大小为N的UDP消息,如

sockaddr_in to;
to.sin_family=AF_INET;
to.sin_port=htons(port);
to.sin_addr.s_addr=inet_addr(address);
sendto(sock,(const char*)buffer,N,0,(sockaddr*)&to,sizeof(to));
现在B收到此消息,希望其大小为N_1

sockaddr from;
socklen_t length_from=sizeof(from);
recvfrom(sock,(char*)buffer,N_1,0,&from,&length_from);
当N_1=N

当N_1=N

如果接收缓冲区大于传入数据报,则将整个数据报传输到缓冲区,并将实际长度作为recfvrom()的返回值返回。你现在忽略了它。不要那样做


如果接收缓冲区小于传入数据报,则会将其截断以适合接收缓冲区,超出该缓冲区的部分将被丢弃。将返回传输到缓冲区的数据的实际长度。

“您目前正在忽略它。不要这样做。”我不会这样做。我只是把代码简化成上下文。包装器返回值。