有关UDP缓冲区的问题在接收数据包时

时间:2011-09-06 02:57:53

标签: c sockets network-programming

假设在UDP中,我知道我收到的数据包每个都是200字节。

在C套接字编程中:

n = recvfrom(sockfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&len);

如果我将buffersize定义为1000.这是否意味着我每次可以收到5个数据包? 或者我仍然只能获得1个数据包,而我的缓冲区中剩余的800个字节未被使用?

TKS!

2 个答案:

答案 0 :(得分:2)

如果您知道您的数据包永远不会超过200个字节,那么就不需要声明您的缓冲区大于200个字节。

每个recvfrom()将接收AT MOST一个数据包。堆栈会缓冲剩余的数据包。在“while()”循环中读取多个数据包确实没有“性能损失”。

答案 1 :(得分:1)

在UDP套接字上,recvfrom()一次只能从一个数据包返回数据。