これについて新しい質問を始めると思いました。私はTCPサーバー/クライアントをセットアップしており、それらは通常私が望む方法で通信します。1 サーバーと 1 クライアント。
私が今やりたいことは、接続が失われたときにクライアントがサーバーに自動的に再接続できるようにする機能を追加することです。これを行う方法に関する完全な情報をオンラインで見つけるのに苦労しています。これは(うまくいけば)関連する問題コードです:
サーバ:
case FD_ACCEPT: //Connection request
{
SOCKET TempSock = accept(s, (struct sockaddr*)&fromm, &fromlenn);
s = TempSock; //Switch old socket to the new one
m_sNetworkStatus.Format("[%s] accepted.", inet_ntoa(fromm.sin_addr));
m_hNetworkStatus.SetWindowTextA(m_sNetworkStatus);
}
最初のクライアント接続は正常に行われます。サーバーはリッスンし、クライアントは接続し、クライアントは切断します...しかし、クライアント
が2回目に接続を試みたとき、結果のクライアントIPアドレス(サーバーから見たもの)は、印刷inet_ntoa(fromm.sin_addr))
が出力するようなもの[0,0,0,0]
です. そのため、クライアントは接続されていると「考え」ますが、そうではなく、サーバーは接続を受け入れたがデータを送信できないことを出力します...クライアント側で切断して再接続を試みると、
接続が拒否されました 10061 エラー。
(サーバー側から切断して新しいポートをリッスンしても問題ありません)
ありがとう !!!