Problem beim empfangen von http client anfrage
-
ich habe hier folgendes Problem, es handelt sich um einen Server wenn ich den aber starte und mit firefox auf den server gehe sagt er mir das die verbindung unterbrochen wurde. ich habe das soweit aufklären können das es daran liegt das er nicht alles von der Anfrage entgegen nimmt.
hat jemand ne idee worans liegen könnte oder wie man das am besten rausfinden kann?
daher nachfolgenden code:
//////////////////////////////////////////////////////////////////////////////////////// void CSerwebView::ProcessRead(int SockNumber) { int err, RdLoop; u_long ulBytesToRead = 0L; char Buf[200]; if (WWWConv[SockNumber].State != WAITING) { #ifdef _DEBUG PrintSt(" *** The socket is trying to send information while we are in send mode. \n"); #endif return; } #ifdef _DEBUG PrintSt(" *** I am able read from the client now \n"); #endif ioctlsocket( WWWConv[SockNumber].CliSock, FIONREAD, &ulBytesToRead); while ((ulBytesToRead > 0L) && (WWWConv[SockNumber].State == WAITING)) { // Just in case a nut desides to crash the thing .... if (ulBytesToRead > 199) ulBytesToRead = 200; err = recv( WWWConv[SockNumber].CliSock, Buf, (int) ulBytesToRead, 0); if (err == SOCKET_ERROR) { PrintSt(" An error ocurred when reading from the client \n"); return; } RdLoop = 0; while (RdLoop < err) if ((Buf[RdLoop] == '\n') ||(Buf[RdLoop] == '\r') ||(Buf[RdLoop] == 0x0D) || (Buf[RdLoop] == 0x0A)) { WWWConv[SockNumber].State = SENDING; break; } else { WWWConv[SockNumber].InBuf += Buf[RdLoop]; RdLoop++; } ioctlsocket( WWWConv[SockNumber].CliSock, FIONREAD, &ulBytesToRead); } // If we received the request, lets address it ..... #ifdef _DEBUG PrintSt(" *** Got the following so far ->"); PrintSt(WWWConv[SockNumber].InBuf); PrintSt("<---\n"); #endif if (WWWConv[SockNumber].State == SENDING) { ProcessRequest(SockNumber); } }
-
habe jetzt
char Buf[200]; erhöht auf 1024
und
if (ulBytesToRead > 199)
ulBytesToRead = 200;angepasst
if (ulBytesToRead > 1023)
ulBytesToRead = 1024;die fehlermeldung ist nun weg aber ganz richtig scheint das wohl auch noch nicht zu sein