Эй ... Как и в недавнем вопросе (никто не реагировал на последние изменения), у меня проблема с назначением структуры sockaddr, заполненной recvfrom
.
Как мне уже советовали, я изменил свой sockaddr на sockaddr_storage и произвел в последний момент его приведение, чтобы быть уверенным в наличии достаточно места для адреса ...
Но проблема
sockaddr_storage s1, s2;
/*recv address into s1*/
s2 = s1;
или memcpy(&s2, &s1, sizeof(sockaddr_storage));
Не работает ... у кого-нибудь есть решение скопировать sockaddr_storage или хотя бы адрес, чтобы сохранить его в структуре и получить исходное значение позже? ...
Спасибо.
РЕДАКТИРОВАТЬ: определения для sockaddr и sockaddr_storage (msdn):
struct sockaddr {
ushort sa_family;
char sa_data[14];
};
typedef struct sockaddr_storage {
short ss_family;
char __ss_pad1[_SS_PAD1SIZE];
__int64 __ss_align;
char __ss_pad2[_SS_PAD2SIZE];
} SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;