Я пытался понять основную идею UDP перфорирования, и у меня возникают проблемы понимания разницы между следующими двумя гнездовыми привязками:Привязка UDP сокета подстановочных хостов в Рубине
sock = UDPSocket.new
sock.bind('', port)
и
sock = UDPSocket.new
sock.bind('0.0.0.0', port)
Раньше я думал, что с помощью «» или «0.0.0.0» сделал то же самое - разрешить сокет для прослушивания на любом сетевом интерфейсе - но так как код не работал с ними взаимозамену я должен что-то не хватает.
Для начального «удара» датаграмма отправляется из сокета, привязанного к «», который затем закрывается и фактическая связь с удаленным хостом выполняется через сокет, привязанный к 0.0.0.0. Я знаю, что 0.0.0.0 обычно ссылается на маршрут по умолчанию, но я не могу понять значение этого в этой ситуации. Связано ли сокет с 0.0.0.0 означает, что вы назначаете ему адрес шлюза по умолчанию?