Я рассматриваю такие функции, как connect()
и bind()
в C-сокетах, и замечаю, что они берут указатель на структуру sockaddr
. Я читал и делал ваше приложение AF-Independent, полезно использовать указатель struct sockaddr_storage
и направить его на указатель sockaddr
из-за всего дополнительного пространства, которое оно имеет для больших адресов.
Мне интересно, как функции, такие как connect()
и bind()
, которые запрашивают указатель sockaddr
, обращаются к данным из указателя, который указывает на большую структуру, чем тот, который он ожидает. Несомненно, вы передаете ему размер структуры, которую вы ему предоставляете, но каков фактический синтаксис, используемый этими функциями для получения IP-адреса от указателей на более крупные структуры, которые вы наложили на struct *sockaddr
?
Вероятно, потому, что я пришел из языков ООП, но это похоже на хак и немного грязный.