Hey ... Comme dans une question récente (personne n'a réagi aux derniers changements) J'ai un problème avec l'affectation d'une structure sockaddr remplie par recvfrom
.copier sockaddr_storage vers un autre sockaddr_storage change l'adresse
Comme je l'ai été informé, je ne change d'sockaddr à sockaddr_storage et casté dans le dernier moment pour être sûr d'avoir assez d'espace pour l'adresse ...
Mais le problème de
sockaddr_storage s1, s2;
/*recv address into s1*/
s2 = s1;
ou memcpy(&s2, &s1, sizeof(sockaddr_storage));
ne pas travailler ... quelqu'un a une solution pour copier un sockaddr_storage ou au moins l'adresse pour le maintenir dans une structure et d'obtenir la valeur d'origine plus tard? ...
Merci.
EDIT: définitions pour sockaddr et 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;
Pour ceux qui ne connaissent pas, pouvez-vous fournir la définition de sockaddr_storage struct/class? – Arun
ajouté dans la partie d'édition – Incubbus
Merci. Selon la définition, je m'attends à ce que memcpy fonctionne. Pouvez-vous nous dire pourquoi vous pensez que memcpy n'a pas fonctionné? – Arun