Дескриптор сокета изменен после вызова на recvfrom - PullRequest
1 голос
/ 21 февраля 2011

РЕДАКТИРОВАТЬ: Удален код / ​​объяснение, потому что этот проект был дан снова, и студенты могут легко найти решение через этот пост.

Чтобы уточнить, что произошло, я просто передал неправильную длину / размер в моем вызове recvfrom ().

1 Ответ

1 голос
/ 21 февраля 2011

В этой строке:

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

Вы передаете BUFFER_LEN как длину (256), но sendHostIP имеет только длину MAXHOSTNAMELEN (64).

Этозаставляет recvfrom() переполнять этот буфер.Та же проблема возникает, когда вы читаете в localHostIP.

...