2010-02-11 16 views
2

Je reçois errno==49 (EADDRNOTAVAIL) en essayant de UDP-bind() à 127.0.0.1:47346 fonctionnant sous Mac OS X sur un G5 (big-endian PowerPC). Y a-t-il quelque chose qui m'empêche de le faire? J'ai essayé d'autres adresses et ports (192.168.1.2 et port 47346) mais sans succès.EADDRNOTAVAIL lors de la liaison 127.0.0.1 sur localhost?

est ici une impression de gdb de mon sockaddr_in:

$1 = { 
    sin_len = 0 '\0', 
    sin_family = 2 '\002', 
    sin_port = 47346, 
    sin_addr = { 
    s_addr = 3232235778 
    }, 
    sin_zero = "???\000\000??" 
} 

Répondre

8

Vous devez remplir le champ sin_len ainsi (avec sizeof (struct sockaddr_in), qui devrait faire l'affaire). Ce champ n'apparaît pas sur chaque plateforme, mais sur lequel elle existe, elle doit être remplie. En outre, assurez-vous de bzero la structure avant de l'utiliser (mais il semble que vous l'avez fait de toute façon).

+0

Merci une gazillion! –

+0

Cela a fonctionné pour moi aussi! Empiriquement, vous devez bzero la structure ou 'bind' échouera toujours. –

+0

Réglage de la longueur n'a eu aucun effet, la mise à zéro de la structure a fonctionné pour moi. Dans mon cas, c'était un code de 3ème partie et j'ai complètement négligé cela. Merci! – nevelis