Составители:
Рубрика:
Листинг 8.Пример эхо-сервера.
/****************************************************************/
/*** Пример эхо-сервера: возврат полученного сообщения ***/
/*** до тех пор, пока не поступит команда "bye<ret>" ***/
/****************************************************************/
/*** (Внутри цикла после функции accept()) ***/
if ( client > 0 )
{ char buffer[1024];
int nbytes;
do
{
nbytes = recv(client, buffer, sizeof(buffer), 0);
if ( nbytes > 0 ) /* если получены данные, возвращаем их */
send(client, buffer, nbytes, 0);
}
while ( nbytes > 0 && strncmp("bye\r", buffer, 4) != 0);
close(client);
}
Заметьте, что признаком окончания сеанса является строка "bye\r", а не "bye\n". В общем случае
это зависит от того, как выполняется обработка входного потока. Из соображений надежности следует
проверять оба случая. Попробуйте протестировать данную программу, использовав в качестве клиента
утилиту Telnet.
Листинг 8.Пример эхо-сервера. /****************************************************************/ /*** Пример эхо-сервера: возврат полученного сообщения ***/ /*** до тех пор, пока не поступит команда "bye" ***/ /****************************************************************/ /*** (Внутри цикла после функции accept()) ***/ if ( client > 0 ) { char buffer[1024]; int nbytes; do { nbytes = recv(client, buffer, sizeof(buffer), 0); if ( nbytes > 0 ) /* если получены данные, возвращаем их */ send(client, buffer, nbytes, 0); } while ( nbytes > 0 && strncmp("bye\r", buffer, 4) != 0); close(client); } Заметьте, что признаком окончания сеанса является строка "bye\r", а не "bye\n". В общем случае это зависит от того, как выполняется обработка входного потока. Из соображений надежности следует проверять оба случая. Попробуйте протестировать данную программу, использовав в качестве клиента утилиту Telnet.