UDP消息大小差异
假设A向B发送大小为N的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
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()的返回值返回。你现在忽略了它。不要那样做
如果接收缓冲区小于传入数据报,则会将其截断以适合接收缓冲区,超出该缓冲区的部分将被丢弃。将返回传输到缓冲区的数据的实际长度。“您目前正在忽略它。不要这样做。”我不会这样做。我只是把代码简化成上下文。包装器返回值。