0
関連Cはじめに警告!
こんにちは、私はCでアプリケーションを書いていると私は、サーバーとのソケット接続を閉じて、特定の間隔で再び開く問題があります。基本的にソケットハンドルを解放し、同じポートを再度開きます。現在持っているコードは次のとおりです。Windows Cソケット閉じると再接続
int main(){
char ipaddr[15] = "xxx.xxx.xxx.xxx";
int port = xxxxx;
SOCKET s;
WSADATA wsa;
WSAStartup(MAKEWORD(2,2),&wsa);
s = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in connect_info;
connect_info.sin_family = AF_INET;
connect_info.sin_port = htons(port);
connect_info.sin_addr.s_addr = inet_addr(ipaddr);
int status = connect(s,(struct sockaddr*)&connect_info,sizeof(connect_info));
send(s,"message with original socket",29,0); //send message with the first socket
Sleep(5);
//do something with setsocketopt to set the socket to not linger somehow
closesocket(s);
status = connect(s,(struct sockaddr*)&connect_info,sizeof(connect_info));
send(s,"message with reconnected socket",32,0); //send message 2 using reconnected socket
//Cleanup
closesocket(s);
WSACleanup();
return 0;
}
可能であれば、例を残してください。どんな助けでも大歓迎です!
*ソケット接続を閉じる際に問題があります。*何か問題がありますか? –
あなたが見せてくれたことは上手く見えます。あなたはもっと具体的になりますか?どのような問題がありますか?実際のコードではエラーをチェックしますか?エラーを返すことができる関数(あなたが呼んでいるものすべて)は失敗しますか? –
2番目のメッセージは送信されず、2番目の接続は-1を返しますが、ソケットハンドルを解放する必要があります。 –