Send () Winsock работает странно - PullRequest
0 голосов
/ 26 марта 2011

Я пытаюсь написать экспериментальную серверную программу, которая принимает соединение и отправляет сообщение клиенту. У меня есть клиент для подключения, но я не могу отправить сообщение, не сделав действительно странных вещей.

Например, в этом фрагменте conn является подключенным сокетом:

int sendRes;
char buf[1024];
strcpy_s(buf,"Testing!");
sendRes = send(conn,buf,strlen(buf),0);
Ну, когда я подключаюсь к нему через Telnet, он ничего не отображает и просто выходит. Однако, когда я добавляю строку cout << sendRes в конец этого фрагмента, он неожиданно работает и отображает Testing! в Telnet, как и положено.

Итак, я хотел бы спросить любого, кто знает, почему он так себя ведет?

1 Ответ

1 голос
/ 26 марта 2011

Может ли быть так, что сам клиент telnet ожидает маркера конца строки для отображения входящего буфера?

Попробуйте написать свой собственный клиент и использовать recv, чтобы увидеть, поступает ли что-нибудь.

С другой стороны, новая строка может не иметь к этому никакого отношения, поскольку cout находится на локальной стороне.

Попробуйте проверить RFC854 для полной спецификации telnet (или, опять же, просто напишите свой собственный клиент).

...