Книга: UNIX: разработка сетевых приложений
5.4. Эхо-клиент TCP: функция main
Разделы на этой странице:
5.4. Эхо-клиент TCP: функция main
В листинге 5.3 показана функция main
TCP-клиента.
Листинг 5.3. Эхо-клиент TCP
//tcpcliserv/tcpcli01.c
1 #include "unp.h"
2 int
3 main(int argc, char **argv)
4 {
5 int sockfd;
6 struct sockaddr_in servaddr;
7 if (argc != 2)
8 err_quit("usage: tcpcli <Ipaddress>");
9 sockfd = Socket(AF_INET, SOCK_STREAM, 0);
10 bzero(&servaddr. sizeof(servaddr));
11 servaddr.sin_family = AF_INET;
12 servaddr.sin_port = htons(SERV_PORT);
13 Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
14 Connect(sockfd, (SA*)&servaddr, sizeof(servaddr));
15 str_cli(stdin, sockfd); /* эта функция выполняет все необходимые
действия со стороны клиента */
16 exit(0);
17 }
Создание сокета, заполнение структуры его адреса
9-13
Создается сокет TCP и структура адреса сокета заполняется IP-адресом сервера и номером порта. IP-адрес сервера мы берем из командной строки, а известный номер порта сервера (SERV_PORT
) — из нашего заголовочного файла unp.h
.
Соединение с сервером
14-15
Функция connect
устанавливает соединение с сервером. Затем функция str_cli
(см. листинг 5.4) выполняет все необходимые действия со стороны клиента.
- 5.1. Введение
- 5.2. Эхо-сервер TCP: функция main
- 5.3. Эхо-сервер TCP: функция str_echo
- 5.4. Эхо-клиент TCP: функция main
- 5.5. Эхо-клиент TCP: функция str_cli
- 5.6. Нормальный запуск
- 5.7. Нормальное завершение
- 5.8. Обработка сигналов POSIX
- 5.9. Обработка сигнала SIGCHLD
- 5.10. Функции wait и waitpid
- 5.11. Прерывание соединения перед завершением функции accept
- 5.12. Завершение процесса сервера
- 5.13. Сигнал SIGPIPE
- 5.14. Сбой на узле сервера
- 5.15. Сбой и перезагрузка на узле сервера
- 5.16. Выключение узла сервера
- 5.17. Итоговый пример TCP
- 5.18. Формат данных
- 5.19. Резюме
- Упражнения
- Глава 5 Пример TCP-соединения клиент-сервер
- 8.12. Функция dg_cli (продолжение)
- 5.17. Итоговый пример TCP
- Совместимость клиентов и серверов различных версий
- Клиенты 3-го диалекта
- 2.1.3. Функция getopt_long()
- Аватар идеального клиента
- Группировка по встроенным функциям и UDF
- Определение версии клиента
- Снятие ответственности с клиента
- 19.1.1. Функция jQuery()
- Приложение 21 Образец должностной инструкции начальника отдела по работе с сетевыми клиентами