2

G5 (ビッグ エンディアンの PowerPC) で Mac OS X を実行して 127.0.0.1:47346errno==49 (EADDRNOTAVAIL)に UDP しようとすると、私は取得します。bind()私がそうすることを妨げている何かがありますか?他のアドレスとポート (192.168.1.2 とポート 47346) を試しましたが、成功しませんでした。

これが私の sockaddr_in の gdb プリントアウトです。

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

1 に答える 1

8

sin_len フィールドにも入力する必要があります (sizeof(struct sockaddr_in) を使用すると、うまくいくはずです)。このフィールドは各プラットフォームには表示されませんが、存在する場合は入力する必要があります。

さらに、それを使用する前に必ず構造体を bzero してください (しかし、とにかくそれをやったように見えます)。

于 2010-02-11T12:56:07.093 に答える