2016-06-20 19 views
-1

linuxのconnect APIからエラーが発生しました。Linuxのソケット接続

私は「接続」を知っていましたが、接続が成功した場合、私は、戻り値は「3」

が、それはエラーコードであるを持ってゼロを返しますか?または何か他に何がわからないのですか?

connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); 

私は靴下から3を得ました。

+0

コードをご覧下さい。 'connect()'は0または-1だけを返します。 – EJP

+0

申し訳ありません私のコードを入れて忘れました – user3773632

+0

このコードは戻りコードを格納しません。それが3であることをどのように知っていますか?そして、「靴下から」はどういう意味ですか? – EJP

答えて

5

connect()の戻り値を取得するには、割り当ての左側に使用される変数を使用するのが最も簡単です。

int result = connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); 
printf("connect returned: %d\n", result); 

sockソケットでなければならない、とsocket()への呼び出しの結果としてファイルディスクリプタの番号を割り当てられました。新しいファイル記述子を返すほとんどのUNIX APIは、利用可能な最低のものを返します。プログラムは、通常、ディスクリプタ0,1、および2(STDIN、STDOUT、およびSTDERR)を使用して開始します。だから、socket()3を返したことは予期しないことではありません。 Linuxシステム(一般的にPOSIX)で

0

、あなたは失敗の理由を知るためにperror機能を使用することができます。

if (0 != connect(...)) 
{ 
    perror("connect"); 
} 

man perror