调用recvfrom后更改了套接字描述符

时间:2011-02-21 05:38:26

标签: c network-programming udp recv

编辑:删除了代码/说明,因为此项目已经再次发布,学生可以通过这篇文章轻松找到解决方案。

为了澄清发生的事情,我只是在我的recvfrom()调用中传递了错误的长度/大小。

1 个答案:

答案 0 :(得分:1)

在这一行:

if(recvfrom( temp->sockfd, sendHostIP, BUFFER_LEN, 0, (struct sockaddr *)&recvAddr, &recvLen) < 0)
    errorMsg("recvfrom");

您将BUFFER_LEN作为长度(256)传递,但sendHostIP的长度仅为MAXHOSTNAMELEN(64)。

这会导致recvfrom()溢出该缓冲区。当您阅读localHostIP时会出现同样的问题。