why it can not access the destination Host when the network cable is disconnected for a moment and later this connected again?
//---------------------------------------------------------------------------- // Thread 'Server': BSD Server socket process //---------------------------------------------------------------------------- static void Server (void const *arg) { SOCKADDR_IN addr; int sock, sd, res; int type = (int)arg; char dbuf[4];
while (1) { sock = socket (AF_INET, type, 0); addr.sin_port = htons(PORT_NUM); addr.sin_family = PF_INET; addr.sin_addr.s_addr = INADDR_ANY; bind (sock, (SOCKADDR *)&addr, sizeof(addr)); if (type == SOCK_STREAM) { listen (sock, 1); sd = accept (sock, NULL, NULL); closesocket (sock); sock = sd; } while (1) { res = recv (sock, dbuf, sizeof (dbuf), 0); if (res <= 0) { break; } if (dbuf[0] == BLINKLED) { LED_Out (dbuf[1]); } } closesocket (sock); } }
Where did it come from?
The trouble with "example code" or "sample code" is that it often just handles the "normal" case - so it may well not be designed to cope with this scenario.
In software projects in general - and comms in particular - the "normal" case is the easy bit; it's handling the "exceptions" properly that takes most of the work!
The 90:10 Rule:
www.8052.com/.../182513
www.8052.com/.../81002
www.8052.com/.../76017
en.wikipedia.org/.../Ninety-ninety_rule