私のアプリケーションはTCP接続を作成します。これは正常に動作しています。 しかし、呼び出しTCPはIPに(非は60秒のタイムアウトでブロッキング) を接続すると一つのネットワーク内のサーバは、多くのIPがこの TCP接続エラー115動作中何が原因ですか?
よう
- 174.XXX
- 54.xxx を言っています
174.X.X.X
は常に成功しています。 しかし、54.x.x.x
と同じサーバーに接続しているTCPは、errno 115 measn操作の進行中に失敗しています(ほとんどの場合)。 LinuxのマイTCPのconenctコードが
tcp_connect(......) { int iValOpt = 0; int iLength= 0; fcnt((int)(long)SockID,F_SETFL_O_NONBLOCK); ret = connect (sockID,(struct sockaddr*)pstSockAdr,uiSockLen); if (ret < 0) { if (errno == EINPROGRESS) { stTv.tv_sec = 60; stTv.tv_usec = 0; FD_ZERO(&write_fd); FD_SET(sockID,&write_fd); iLength = sizeof(int); if (0 < select (sockID+1) , NULL,&write_fd,NULL,&stTv); { if(0 > getsockopt(sockID,SOL_SOCKET,SO_ERROR,(void*)(&iValOpt),&iLength)) { return -1 } if (0 != iValOpt) { return -1; } return success; } else { return -1; } } else { return -1; } } return success; }
、あなたのアプリケーションを使用せずに54.x.x.x IPにtelnet接続しようとした場合はどうなりますか?同じ行動ですか? –
いいえ、手動パテアプリケーションは正常に動作します – user1340512
「タイムアウトでノンブロッキング」という言葉は矛盾しています。 – EJP