[Comm] Q: Programming sockets in C language troubles
Dmitry V. Levin
=?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Пн Май 19 16:14:22 MSD 2003
On Mon, May 19, 2003 at 03:38:00PM +0400, Andrey Brindeew wrote:
> На работе встала задача перегонять данные с одной машины (расчетная,
> сервер) на другую (отображение) по сети. В качестве языка используется
> Си, ОС Linux, поэтому было решено использовать сокеты для передачи, дабы
> ничего не изобретать ("всё уже украдено до нас" (C) :-) )
>
> Берем тривиальный пример из документации по glibc (pinfo select, самая
> последняя ссылка на странице: Server Example). Чуть-чуть дорабатываем
> (избавляемся от функции make_socket путем включения ее в программу) и
> пытаемся тестить:
>
> $ gcc -o srv{,.c}
> $ ./srv
>
> На другой консоли:
> $ telnet 127.0.0.1 1200
> Trying 127.0.0.1...
> Connected to 127.0.0.1.
> Escape character is '^]'.
> protocol_command 12345
$ apropos telnet netcat
telnet (1) - user interface to the TELNET protocol
netcat (1) - arbitrary TCP and UDP connections and listens
> Переключаемся на серверную консоль: _тишина полная_.
> Нажимаем Enter три (или больше) раз - видим следующее:
>
> $ ./srv
>
> got message from 0 client: `
> ╛@пВЪ©PВЪ©└'
Это telnet protocol, RFC 854.
[...]
> Теперь вопросы:
> 1. Почему у нас на серверной консоли фигурируют 0, 1 и 2 сокеты (я
> так понимаю, что это stdin, stdout и stderr сервера собственной
> персоной)? Я их в FD_SET не заказывал на прослушивание с помощью
> select. :-(
А кто будет FD_ISSET делать?
> 2. Что за мусор идет после подстроки "protocol_com"? Я так понимаю, что
> буфер чтения у сокета заполнился (ибо 12 символов всего), но откуда
> мусор?
Это telnet protocol, RFC 854.
> 3. Почему сообщение о подсоединении клиента не появилось сразу же после
> того, как я подцепился к серверу с помощью telnet?
Это telnet protocol, RFC 854.
> 4. Я наверное еще много чего не понимаю, какая хорошая литература есть
> в сети и код какой _хорошо написанной_ программы можно посмотреть
> для примера? В исходниках sshd и popa3d запутался... :-(
Stevens W.R. UNIX Network Programming, Volume 1, Second Edition,
Networking APIs: Sockets and XTI // Prentice Hall, Upper Saddle River,
N.J., 1998
Есть (в Москве наверняка) перевод на русский язык, но имейте в виду, что,
в отличие от перевода второго тома, перевод этого тома содержит тьму
ошибок.
--
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/community/attachments/20030519/b88a6732/attachment-0004.bin>
Подробная информация о списке рассылки community