Почему добавление вызова send () приведет к сбою предыдущего вызова send ()? - PullRequest
0 голосов
/ 17 ноября 2018

Код внизу.

Команда send () в строке 207 отлично работает сама по себе. Тем не менее, когда я добавляю команду send () в строке 218, первая не работает - выдает ошибку «Неверный адрес». Я подтвердил, что вторая команда send () фактически не выполняется.

Я полностью потерян здесь ...

The confusing code in question

1 Ответ

0 голосов
/ 17 ноября 2018

Похоже, что вы создаете неопределенное поведение, используя BUFFER_SIZE в качестве суммы для отправки, поскольку вряд ли это будет длина двух строк. Добавление второго вызова send() может изменить расположение строк в памяти, что приведет к получаемой вами ошибке.

Должно быть:

send(newsock_fd, "No such command in history", sizeof "No such command in history", 0);

Если вы не хотите отправлять завершающий нулевой байт, вычтите 1 из sizeof.

...