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