Michael J. Donahoo "TCP/IP Sockets in C, 2nd Edition" / Michael J. Donahoo "Программирование TCP/IP сокетов в Си, 2-ое издание": 2.5 Подсоединение сокета
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
2.5 Подсоединение сокета victor8632 07.06.12 в 07:38 |
|
|
В этом смысле использование TCP сокетов чем-то похоже на пользование телефонной сетью. victor8632 07.06.12 в 07:40 |
||
|
Перед тем как поговорить, вы должны набрать нужный телефона и потом должно быть установлено соединение; если соединение не установлено, то вы будете пробовать звонить позже. victor8632 07.06.12 в 07:42 |
||
|
Процесс установки соединения сильно отличается у клиента и сервера: Клиент инициирует соединение, в то время как сервер пассивно ждет, когда клиент подключится к нему. (Для получения дополнительной информации о процессе подключения и то, как он отражен в функциях API, смотрите в пункте 7.4.) victor8632 07.06.12 в 07:49 |
||
|
Для установки соединения с сервером мы вызываем функцию connect() для сокета. victor8632 07.06.12 в 07:51 |
||
|
int connect(int socket, const struct sockaddr *foreignAddress, socklen_t addressLength) prefer211 06.06.12 в 16:08 |
||
|
Первый аргумент - сокет - является дескриптором, созданным функцией socket(). foreignAddress - является указателем на структуру sockaddr, которая генерируется API сокетов; в нашем случае это всегда будет указатель либо на структуру sockaddr_in, либо на структуру sockaddr_in6, содержащую интернет адрес и порт сервера. victor8632 07.06.12 в 07:53 |
||
|
addressLength определяет длину адресной структуры, которую можно получить как sizeof(struct sockaddr_in) или sizeof(struct sockaddr_in6). victor8632 07.06.12 в 10:15 |
||
|
Когда функция connect() заканчивает свою работу, сокет переходит в состояние подключения и соединение готово к передаче данных при помощи вызовов функций send() и recv(). victor8632 07.06.12 в 10:18 |
