Конечная программа будет сочетать в себе как функционал клиентских приложений, так и серверных. То есть будет не только подключаться к сторонним процессам, но и сама принимать входящие подключения.
Компоненты
Программу можно условно разделить на пять компонентов: ввод (input), вывод (output), обработка ввода (handler), контроллер (system) и небольшая библиотека функция для работы с сокетами (socket_lib).
Ввод/вывод данных осуществляется через стандартные потоки ввода/вывода.
Компонент handler занимается обработкой ввода пользователя, устанавливая систему команд и накладывая ограничения на нее.
Контроллер непосредственно выполняет работу, которую задает пользователь через систему команд, используя доступные функции из компонента socket_lib, и выводит информацию пользователю о результатах этой работы.
Отношения между компонентами наглядно отображены на прилагаемом рисунке, где стрелками указано направление передачи управления программой.
Функциональность
Теперь необходимо определиться с тем, что должна делать программа. Так как она сочетает в себе одновременно функции клиента и сервера, то список функций примерно следующий:
- Создать сервер
- Отправить сообщение
- Вывод информации о текущем подключении
- Вывод истории подключений
Система команд
После того как определились с функционалом программы, необходимо составить систему команд для пользователей, соответствующую функционалу. В нашем случае система команд будет состоять из четырех команд с аргументами:
- create_server port - создает слушающий сокет и привязывает его к порту port на текущем компьютере.
- send ip port mess - отправляет сообщение mess к процессу, запущенному по адресу ip:port. В качестве ip можно указать 127.0.0.1, что позволит отправить сообщение другому процессу запущенному на текущей (локальной) машине или самому себе, если указать порт к которому привязан слушающий сокет текущего процесса.
- show_connection - отображает информацию о текущем подключении.
- show_history - отображает историю подключений.
Заключение
В следующей статье я непосредственно расскажу о реализации программы по техническому заданию, которое было косвенно изложено в этой статье, и выложу ее полный исходный код.
Введение в WSA
Комментариев нет:
Отправить комментарий