Соединить сокет с сервером
- Прототип
-
#include <sys/types.h>
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *serv_addr,
socklen_t addrlen);
- Описание
-
Когда ты создал дескриптор сокета с помощью socket(), ты можешь соединить его с удаленным сервером используя connect(). Все, что тебе нужно, это передать ей дескриптор и адрес сервера. (Да, и длину адреса, которая тоже передается в подобные функции.)
Если ты еще не вызвал bind() для этого сокета, он автоматичеаки привязывается к твоему IP-адресу на произвольный порт. Как правило, этого достаточно, так как для соединения неважно, какой локальный порт используется. Можно и вызвать bind(), если хочешь привязать клиента к определенному IP и порту, но это случается довольно редко.
Когда connect() выполнен, можно передавать и принимать данные сколько душе угодно.
Важно: если ты вызовешь connect() для сокета SOCK_DGRAM (UDP), то сможешь использовать функции send() и recv() в добавок к обычным sendto() и recvfrom(). Если это нужно.
- Возвращаемое значение
-
Возвращает ноль при успехе, -1 при ошибке, и сохраняет ее номер в errno.
- Пример
-
int s;
struct sockaddr_in serv_addr;
// пусть сервер с адресом 63.161.169.137 слушает на порте 80:
myaddr.sin_family = AF_INET;
myaddr.sin_port = htons(80);
inet_aton("63.161.169.137", &myaddr.sin_addr.s_addr);
s = socket(PF_INET, SOCK_STREAM, 0);
connect(s, (struct sockaddr*)myaddr, sizeof(myaddr));
// теперь можно вызывать send() и recv()
|
- См. также
-
socket(),
bind()
|