Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > sockaddr и sockaddr_in


Автор: NightGoblin 25.12.2002, 17:06
Народ, если кто сталкивался в проблемой, подскажите плз. Надо создать соединение с сервером в инете по HTTP. В принципе, все понятно, как все реализовать через сокеты, но при вызове connect () компилятор ругается:

warning: passing arg 2 of `connect' from incompatible pointer type

так как connect'у нужен const struct sockaddr, а адрес IP задается структурой struct sockaddr_in. И хотя все компиллируется и работает (sockaddr_in по размерам и значениям подходит под sockaddr), хотелось бы сделать все аккуратненько и убрать это предупреждение. В принципе, можно, конечно, аналогичным образом заполнить поля sockaddr, но, опять же, делать этого не хочется... Или все-таки надо? :)

ЗЫ: платформа Linux / GCC

Автор: Baa 25.12.2002, 17:57
To actually fill in values for each part of an address, you use the SOCKADDR_IN data structure, which is specifically for this address format. The SOCKADDR and the SOCKADDR_IN data structures are the same size. You simply cast to switch between the two structure types.

Автор: NightGoblin 26.12.2002, 12:39
Цитата(Baa @ 25.12.2002, 09:57)
To actually fill in values for each part of an address, you use the SOCKADDR_IN data structure, which is specifically for this address format. The SOCKADDR and the SOCKADDR_IN data structures are the same size. You simply cast to switch between the two structure types.

окей, только ты не забывай что я чайник :) как их за'cast'ить-то? :) (sockaddr) &addr не проходит (пишет sockaddr undeclared), (struct sockaddr) &addr тоже, пишет conversion to non-scalar type requested... Или я чего-то недопонимаю?...

Автор: Baa 27.12.2002, 00:29
struct sockaddr_in *sock;
connect (s, (struct sockaddr*)sock, hzskok);


Автор: NightGoblin 31.12.2002, 18:00
Спасибо, все забегало! :)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)