Программирование POSIX сокет. Сукиязов С.А. - 13 стр.

UptoLike

Составители: 

socket()
listen()
accept()
close()
read() write()
shutdown()
bind()
socket()
connect()
close()
read() write()
bind()
ñå ð â å ð
êëèåí ò
Рисунок 2. Алгоритмы построения клиента и сервера сходны, но схема подключения к сети
в них разная
Простой эхо-сервер
Прежде чем перейти к рассмотрению системных функций, следует рассказать о том, какого рода сервер мы бу-
дем создавать. В качестве образца был выбран стандартный эхо-сервер. Это основа основ серверного программиро-
вания, подобно приложению "Hello, World" в программировании на языке С.
Большинство соединений можно проверить, послав данные и запросив их назад в неизменном
виде (эхо).
Это хорошая идея для создания простейшего сервера. Аналогичным образом пишутся и отлаживаются даже самые
сложные приложения.
Парадигма построения и отладки
В сетевом программировании приходится очень много заниматься тестированием и отладкой. Это
столь сложная область, что с целью минимизации ошибок следует придерживаться простейших под-
ходов к построению приложений. Парадигма построения и отладки (одна из составных частей мето-
дологии ускоренной разработки программ) предписывает сконцентрироваться на решении конкретной
проблемы. Когда она будет решена, полученный
программный модуль станет строительным блоком
для остальной части приложения
В общем случае в серверной программе требуется в определенной последовательности вызвать
ряд системных функций. На примере эхо-сервера можно наглядно увидеть эту последовательность, не
отвлекаясь на решение других, более специфических задач. Ниже описан общий алгоритм работы эхо-
сервера.
1.Создание сокета с помощью функции socket ().
2.Привязка к порту с помощью функции bind().
3.
Перевод сокета в режим прослушивания с помощью функции listen ().
4.Проверка подключения с помощью функции accept ().
5.Чтение сообщения с помощью функции recv() или read().
6.Возврат сообщения клиенту с помощью функции send() или write ().
7.Если полученное сообщение не является строкой "bye", возврат к п. 5.
8.Разрыв соединения с помощью функции close() или shutdown().
9.Возврат к п. 4.
В приведенном алгоритме четко
видны отличия от протокола UDP и других протоколов, не ори-
ентированных на установление соединений. Здесь сервер не закрывает соединение до тех пор, пока кли-
ент не пришлет команду "bye".
Благодаря алгоритму становится понятно, что необходимо предпринять дальше при создании сер-
вера. Первый очевидный шаг (создание сокета) рассматривался выше. Как уже упоминалось, с
этого
начинается любая сетевая программа. Следующий шагвыбор портаобязателен для сервера.
                                        ñåðâåð                          ê ëè åí ò

                                        socket()                        socket()



                                         bind()                          bind()



                                         listen()



                                        accept()                        connect()




                              read()                 write()   read()               write()




                                         close()                         close()



                                       shutdown ()




       Рисунок 2. Алгоритмы построения клиента и сервера сходны, но схема подключения к сети
                                        в них разная

      Простой эхо-сервер
   Прежде чем перейти к рассмотрению системных функций, следует рассказать о том, какого рода сервер мы бу-
дем создавать. В качестве образца был выбран стандартный эхо-сервер. Это основа основ серверного программиро-
вания, подобно приложению "Hello, World" в программировании на языке С.
      Большинство соединений можно проверить, послав данные и запросив их назад в неизменном виде (эхо).
Это хорошая идея для создания простейшего сервера. Аналогичным образом пишутся и отлаживаются даже самые
сложные приложения.

Парадигма построения и отладки
В сетевом программировании приходится очень много заниматься тестированием и отладкой. Это
столь сложная область, что с целью минимизации ошибок следует придерживаться простейших под-
ходов к построению приложений. Парадигма построения и отладки (одна из составных частей мето-
дологии ускоренной разработки программ) предписывает сконцентрироваться на решении конкретной
проблемы. Когда она будет решена, полученный программный модуль станет строительным блоком
для остальной части приложения
      В общем случае в серверной программе требуется в определенной последовательности вызвать
ряд системных функций. На примере эхо-сервера можно наглядно увидеть эту последовательность, не
отвлекаясь на решение других, более специфических задач. Ниже описан общий алгоритм работы эхо-
сервера.
             1.Создание сокета с помощью функции socket ().
             2.Привязка к порту с помощью функции bind().
             3.Перевод сокета в режим прослушивания с помощью функции listen ().
             4.Проверка подключения с помощью функции accept ().
             5.Чтение сообщения с помощью функции recv() или read().
             6.Возврат сообщения клиенту с помощью функции send() или write ().
             7.Если полученное сообщение не является строкой "bye", возврат к п. 5.
             8.Разрыв соединения с помощью функции close() или shutdown().
             9.Возврат к п. 4.
       В приведенном алгоритме четко видны отличия от протокола UDP и других протоколов, не ори-
ентированных на установление соединений. Здесь сервер не закрывает соединение до тех пор, пока кли-
ент не пришлет команду "bye".
      Благодаря алгоритму становится понятно, что необходимо предпринять дальше при создании сер-
вера. Первый очевидный шаг (создание сокета) рассматривался выше. Как уже упоминалось, с этого
начинается любая сетевая программа. Следующий шаг — выбор порта — обязателен для сервера.