Я пытаюсь построить сервер с PIC24F.Microchip TCPIP не работает
Это кусок кода я isuing:
switch(TCPServerState) {
case SM_HOME:
// Allocate a socket for this server to listen and accept connections on
socket.Socket = TCPOpen(0, TCP_OPEN_SERVER, SERVER_PORT, TCP_PURPOSE_GENERIC_TCP_SERVER);
if(socket.Socket != INVALID_SOCKET) {
TCPServerState = SM_LISTENING;
}
break;
case SM_LISTENING:
// See if anyone is connected to us
//if(TCPIsConnected(socket.Socket)) {
if(!TCPWasReset(socket.Socket)){
if(socket.Connected == 0) {
socket.Connected = 1;
printf("Socket is CONNECTED: %d\n", socket.Socket);
}
uint16_t avaible = TCPIsGetReady(socket.Socket);
// Some stuff
}
else if(socket.Connected == 1){
printf("Socket RESET: %d\n", socket.Socket);
TCPServerState = SM_CLOSING;
}
break;
case SM_CLOSING:
// Close the socket connection.
socket.Connected = 0;
TCPClose(socket.Socket);
TCPServerState = SM_HOME;
printf("Socket is CLOSED: %d\n", socket.Socket);
break;
}
Все работает отлично, если я закрою сокет клиента правильно, но если я отключить сетевой кабель я не в состоянии обнаружить отключение и мой код делает не закрывайте сокет, потому что TCPWasReset все еще FALSE (или TCPIsConnected по-прежнему TRUE).
Итак, как я могу обнаружить отключение сетевого кабеля (без добавления программного обеспечения keep_alive)?
Благодаря
возможно дубликат [TCP клиента обнаруживать Disconnect] (http://stackoverflow.com/questions/283375/detecting-tcp-client-disconnect) – EJP
Нет это стек микрочип TCPIP связанный с этим вопрос. – blow