PERINGATAN PEMULA C RELATIF!
Hai, Saya menulis aplikasi di c dan saya mengalami masalah dengan menutup koneksi soket dengan server dan membukanya kembali pada interval tertentu. Pada dasarnya membebaskan pegangan soket dan membuka kembali port yang sama. Kode yang saya miliki saat ini adalah sebagai berikut:

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;
}

Jika memungkinkan silakan tinggalkan contoh. Bantuan apa pun sangat dihargai!

0
Anton Althoff 28 November 2017, 07:03

1 menjawab

Jawaban Terbaik

Anda perlu membuat soket lagi setelah menutup soket sebelum mencoba membuat sambungan.

closesocket(s);
s = socket(AF_INET,SOCK_STREAM,0);
status = connect(s,(struct sockaddr*)&connect_info,sizeof(connect_info));
2
Gaurav Sehgal 28 November 2017, 04:20