2017-07-22 22 views
-3

正しく接続されました。一定の時間が経過すると表示されます。 誰にも分かりますか?Linuxソケットrecv return -1、errno 110接続がタイムアウトしました

+2

あなたは[mcve]を提供できますか? –

+0

(まあ、それは*私たちによって検証可能*である必要はありませんが、あなたがそれを再現できる最小限のコードです) –

+0

これはMCVEが役に立たない時の一つです。それはネットワーク上の問題であり、OPのネットワークはSOの質問に投稿できません:) –

答えて

4

エラーETIMEDOUTためmanual page of recv(3)状態:

接続がアクティブな接続で接続確立時、タイムアウト、または送信タイムアウトに起因します。

このエラーの原因は、使用しているソケットの種類によって多岐にわたります。

私たちは、あなたがTCPソケットを使用していると仮定した場合:

int tcp_socket = socket(AF_INET, SOCK_STREAM, 0); 

は、それはあなたの通信相手が時間に認め送らなかったことを意味します。

+0

Linuxの場合、http:// man7.org/linux/man-pages/man2/recv.2.htmlもしくはこちらhttp://man7.org/linux/man-pages/man3/recv.3p.html – alk

+0

ありがとうございます。 –

1

connect()にある場合は、ケーブルが引っ張られたなどのファイアウォールやネットワーク接続の問題のために、リモートホストが接続要求に応答しなかったことを意味します。

確立されたTCP接続でこれを取得した場合、リモートホストは、ホストのタイムアウト期間内にホストから送信されたTCPセグメントを確認しなかったことを意味します。

+0

から明らかに 'recv'からはっきりとしています;) –

+2

*質問タイトルはどうですか?* –

+0

@AnttiHaapalaもっと詳しい情報が必要な場合は、それを私の上に置いてください。私はそれを必要としません。 – EJP

関連する問題