Когда IPPROTO_UDP требуется?
Существует ли когда-нибудь случай, где UDP не является протоколом по умолчанию для SOCK_DGRAM? (реальные случаи, не гипотетические ", это могло бы быть","),
т.е. каковы ситуации, где следующие две строки не произвели бы идентичное поведение?
if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
if ((s=socket(AF_INET, SOCK_DGRAM, 0))==-1)
Учитывая эти заявления:
tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
raw_socket = socket(AF_INET, SOCK_RAW, protocol);
на странице руководства linux ip(7) написано:
Единственными допустимыми значениями для протокола являются 0 и IPPROTO_TCP для TCP-сокетов, и 0 и IPPROTO_UDP для UDP-сокетов. Для SOCK_RAW вы можете указать действующий IP-протокол IANA, определенный в RFC 1700 назначенные номера.
Эти две строки в ваших вопросах всегда будут давать один и тот же результат.
.