假设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?
时会发生什么答案 0 :(得分:1)
当N_1!= N?
时会发生什么
如果接收缓冲区大于传入数据报,则整个数据报将传输到缓冲区,并返回实际长度作为recfvrom()的返回值。你现在忽略了它。不要那样做。
如果接收缓冲区小于传入数据报,则会将其截断以适合接收缓冲区,并且超出该数据报的数据将被丢弃。返回传输到缓冲区的实际数据长度。