Если вы хотите привязать порт к C, вы должны использовать htons(port)
для преобразования порта из байтового порядка хоста в сетевой байтовый порядок. Это происходит потому, что номер порта копируется непосредственно в пакеты TCP, поэтому они должны совпадать на машинах с прямым и прямым порядком байтов.
Рассмотрим следующий пример в C:
int port = 5000;
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(port);
Обратите внимание на использование htons
. Теперь, если вы запустите netstat -anp --tcp
(на Linux), вы увидите, что 0.0.0.0:5000
прослушивается. Похоже, что номер порта использует порядковый номер узла.
Теперь возникает вопрос: если номер порта является порядковым номером узла в URL, означает ли это, что клиент с прямым порядком байтов не может использовать http://a.b.c.d:5000
URL для подключиться к серверу с прямым порядком байтов, слушающему 0.0.0.0:5000
?