2011-10-20 166 views
1

私のプログラムに奇妙な問題が発生しました。アドレスファミリはプロトコルでサポートされていませんか? sendto

標準のsendtoとrecvfromを使用して、私はUDPを使ってファイルを転送してきました。

私は、サーバーとクライアントがプログラム中に何度も前後に通信しています。

私はサーバーのコードに新しいsendto呼び出しを追加しました。実行時にこのエラーが表示されます。

Address family not supported by protocol.それは私のsendto機能から来ています。ここで

は、それが実行されるのコードです:

if ((numbytes = sendto(sockfd,sDropped,strlen(sDropped), 0, 
     (struct sockaddr *)&their_addr, p->ai_addrlen)) == -1) { 
    perror("talker: sendto"); 
    exit(1); 
    } 

私が言ったように、このコードは約4他の回以前のプログラムで動作しますので、私は私が右フックアップのすべてを持っていると確信しています。

誰もがこの問題に精通していて、この問題を引き起こす可能性のあるプログラムで何を確認するかについていくつかの洞察を与えることができますか?

ありがとうございました。

+1

私は、 'their_addr'が有効な' struct sockaddr_in'ではないか、または使用中のアドレスファミリに正しい構造であるとは限りません。おそらく 'sockaddr'構造体ヘッダーのない生のIPアドレスです...?私は 'p-> ai_addr'を使うべきだと思います。 –

+0

明らかに何かが外観にもかかわらず適切に設定/定義されていないので、sockfdのコード、構造体pが指しているもの、their_addr、prio関連のsocket()、connect()何が起こっているのかが分かりません。 – gnometorule

+0

このエラーに基づいて、UDP send()などのTCPソケットを使用している可能性があります。 – gnometorule

答えて

8

their_addr.sin_familyが設定されているかどうかを確認してください。ちょうどその間違いのために同じメッセージで戦って数時間を無駄にするだけです。

関連する問題