1
저는 PIC24F로 서버를 구축하려고합니다. 마이크로 칩 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 구현을 추가하지 않고 네트워크 케이블의 연결을 어떻게 찾을 수 있습니까?
감사
가능한 중복 (http://stackoverflow.com/questions/283375/detecting-tcp-client-disconnect는) – EJP
없음이 마이크로 칩 TCPIP 스택 관련 질문입니다. – blow