假设在UDP中,我知道我收到的数据包每个都是200字节。
在C套接字编程中:
n = recvfrom(sockfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&len);
如果我将buffersize定义为1000.这是否意味着我每次可以收到5个数据包? 或者我仍然只能获得1个数据包,而我的缓冲区中剩余的800个字节未被使用?
TKS!
答案 0 :(得分:2)
如果您知道您的数据包永远不会超过200个字节,那么就不需要声明您的缓冲区大于200个字节。
每个recvfrom()将接收AT MOST一个数据包。堆栈会缓冲剩余的数据包。在“while()”循环中读取多个数据包确实没有“性能损失”。
答案 1 :(得分:1)
在UDP套接字上,recvfrom()
一次只能从一个数据包返回数据。