Предыдущая | Оглавление | Следующая |
Соединить сокет с сервером
#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() |
Предыдущая | Оглавление | Следующая |