2010-12-15 20 views
0

私のC++アプリケーションでは、getpeernameシステムコールを使用していて、var saに0.0.0.0を返します。 そこにはエラーがerrnoにされていない、とリターンコードは、ここでは0linuxシステムコールgetpeername C++

あるコードです:

int GetSock(int sock) 
{ 
    struct sockaddr_storage ss; 
    socklen_t salen = sizeof(ss); 
    struct sockaddr *sa; 
    struct addrinfo hints, *paddr, *paddrp; 

    sa = (struct sockaddr *)&ss; 

    if (getpeername(sock, sa, &salen) != 0) { 
     error = errno; 
     return -1; 
    } 
} 

注:私は日食でGCCでこのコードをコンパイルしています。 助けてください?

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

+0

コードの例を表示できますか? – birryree

+0

getpeername()を使ってみましたか? – yasouser

+0

接続されていないソケットまたはサーバーソケットで使用されているようです。 –

答えて

0

Upon successful completion, 0 shall be returned. Otherwise, -1 shall be returned and errno set to indicate the error.

EDIT:靴下の値がされているものを確認してください。 getpeernameは、ソケットのピアアドレス(この場合はsock)のみを抽出して格納し、saに格納します。あなたのソケットが作成されていないか、ソケットが名前付きソケットにバインドされていない場合、何が指しているかは不明ですが、これがあなたのケースかもしれません。

+0

エラーはありません。それはちょうどsaに戻ります0.0.0.0 – gln

+0

@gln - 私の更新を参照してください – DumbCoder

+0

どうすれば確認できますか? – gln

1
 error = errno; 
     return -1; 
    } 
    /* Did you mean to return something right here? */ 
} 
+0

エラーはありません。 sa 0.0.0.0に戻るだけです – gln

関連する問題