Я следую примеру, приведенному в Вводное учебное пособие по межпроцессному взаимодействию 4.4BSD , где рассказывается, как общаться с помощью дейтаграмм в домене Интернета.В примерах 6a и 6b, 6a устанавливаются порт и имя хоста
name.sin_addr.s_addr = INADDR_ANY;
name.sin_port = 0;
Из того, что я понимаю, INADDR_ANY
- это подстановочное значение, позволяющее сокету получать из любого места.Но я не могу отправить откуда-либо и явно установить имя хоста в 6b
hp = gethostbyname(argv[1]);
Так какое имя хоста будет здесь допустимым?Когда я попробовал
program6b localhost 0
Но это говорит о том, что он не может назначить запрошенный адрес (я использовал другие адреса и то же сообщение).6a говорит, что «Socket имеет порт № 0», хотя это означает, что он прослушивает все порты, верно?В любом случае я попытался настроить пост вручную, чтобы "Socket имел порт # 53790".Netstat показывает, что он слушает
udp4 0 0 * .53790 .
И с помощью команды
program6b localhost 53790
Iполучить ответ, что данные были получены из сокета, который читает.Итак, я частично понимаю, что происходит, но я хотел бы знать, как пример должен работать для порта № 0.