16
不好意思,又上來發問
我在server寫的一段測試
mysock = socket(AF_INET, SOCK_STREAM, 0 );
bind( mysock, ( struct sockaddr* )&sockAddr, sizeof( sockAddr ));
listen( mysock, 20 );
while(1){
clientSock = accept( mysock, (struct sockaddr*)&client, &addrsize );
printf("%d",clientSock);
result = recv( clientSock, buffer, sizeof( buffer ), 0 );
printf("%d", result);
printf( "%s", buffer );
char sendstring[] = "hello";
send(clientSock, sendstring, sizeof(sendstring), 0);
char test[1024];
strcpy(test,inet_ntoa(client.sin_addr));
printf("%s\n%d",test,ntohs(client.sin_port));
}
問題是這樣的
當client發出close之後
server回應ack導致client進入FIN_WAIT_2
從網路上查到以下這段資料
當socket port收到對方送來FIN封包時,表示對方要關閉連線,此時送回ACK封包後,進入CLOSE_WAITING狀態,等待程式呼叫closesocket。當程式呼叫closesocket後,送出FIN封包給對方,並進入LAST_ACK狀態,等待對方回送ACK封包後,便進入TIME_WAIT狀態.
我要怎麼做或是調用什麼函式得知對方請求中斷連線?