что 0 указывает на системный вызов socket ()? - PullRequest
7 голосов
/ 17 сентября 2010

что 0 указывает на следующую строку? Какие еще флаги я могу использовать?

server = socket(AF_UNIX, SOCK_STREAM, 0)

Ответы [ 3 ]

10 голосов
/ 17 сентября 2010

Как, вероятно, говорили другие, третий аргумент socket - это, как правило, int, указывающий протокол.0 указывает, что вызывающий абонент не хочет указывать протокол и оставляет его на усмотрение поставщика услуг.

Кроме нуля, другим распространенным является IPPROTO_TCP.

Полная информацияможно найти на странице справочника, используя man 2 socket на вашем компьютере или посетив здесь .

3 голосов
/ 17 сентября 2010

Из справочных страниц сокета:

int socket(int domain, int type, int protocol);

Протокол указывает конкретный протокол, который будет использоваться с сокетом.Обычно существует только один протокол для поддержки определенного типа сокета в данном семействе протоколов, и в этом случае протокол может быть указан как 0 .Однако возможно, что может существовать много протоколов, и в этом случае конкретный протокол должен быть указан таким образом.Используемый номер протокола зависит от «области связи», в которой должна осуществляться связь;см. протоколы (5).Смотрите getprotoent (3) о том, как отобразить строки имен протоколов в номера протоколов.

0 голосов
/ 17 сентября 2010

Лучшее, что можно сделать здесь, это прочитать справочную страницу .В этом документе говорится, что третьим параметром является протокол, в данном случае это SOCK_STREAM, но могут быть и другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...