编辑:删除了代码/解释,因为这个项目已经再次给出,学生可以通过这篇文章轻松找到解决方案。
为了澄清发生了什么,我只是在我的 recvfrom() 调用中传递了错误的长度/大小。
最佳答案
在这一行中:
if(recvfrom( temp->sockfd, sendHostIP, BUFFER_LEN, 0, (struct sockaddr *)&recvAddr, &recvLen) < 0)
errorMsg("recvfrom");
您传递 BUFFER_LEN
作为长度 (256),但 sendHostIP
的长度仅为 MAXHOSTNAMELEN
(64)。
这会导致 recvfrom()
溢出该缓冲区。当您读入 localHostIP
时会出现同样的问题。
关于c - 套接字描述符在调用 recvfrom 后更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062723/