Это архив сайта coldflame.by.ru, он не обновлялся с 2007 года. Мой современный сайт тут: http://leonid.shevtsov.me.
Домой! Обо мне Специально для РИ-06-1 Разнообразное... барахло, короче :) Программы и прочее Статьи и переводы Блог SmartDaemon
Предыдущая ОглавлениеСледующая

bind()

Связать сокет с 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


Предыдущая ОглавлениеСледующая