Socket Problem
-
Hallo ich habe da ein kleines Problem...
Ich habe 3 kleine Sub Routinen und zwar
Webserver_Start, WebserverCheck und Webserver_Stop
Die Routinen funktionieren auch fehlerfrei...
Doch nun habe ich in der Webserver_Check das Problem, dass
wegen dem acceppt das gesamte Programm blockiert wirdKann mir jemand erklären, wie ich die Routine so umprogrammieren kann,
dass sie nicht mehr blockiert sondern das Programm einfach weiter rennt ?Die WebserverCheck routine wird 1 mal pro Sekunde aufgerufen was für meine Zwecke
ausreichend ist...Ich danke euch !
Hier noch einmal die Routine CheckWebserver
RMGlobals.WebServerClientSocket und RMGlobals.WebServerSocket
sind hierbei in meinem Programm Global declarierte intint WebserverCheck(void) { struct sockaddr_in Client; #ifdef _WIN32 int Client_Size = 0; #else socklen_t Client_Size; #endif char File[1024]; char Info[1024]; char Daten[1024]; char sCommand[1024]; int bytes; Client_Size = sizeof(Client); RMGlobals.WebServerClientSocket = accept(RMGlobals.WebServerSocket, (struct sockaddr*) &Client, &Client_Size); bytes = recv(RMGlobals.WebServerClientSocket, Daten, sizeof(Daten) - 1, 0); Daten[bytes] = '\0'; // printf("Daten = %s\n", Daten); strcpy( File, ""); sscanf(Daten,"GET /%[^ ] HTTP%s", File, Info); // printf("Gesuchte Datei = %s\n", File); strcpy( sCommand, "HTTP/1.0 200 OK\nContent-Type: text/html\nContent-Length: 140\n\n"); send( RMGlobals.WebServerClientSocket, sCommand, strlen( sCommand ), 0); strcpy( sCommand, "<HTML><HEAD><TITLE>TEST!! Webinterface</TITLE></HEAD><BODY BGCOLOR=BLACK TEXT=WHITE><CENTER><H1>TEST!! Webinterface</H1></CENTER></BODY></HTML>"); send( RMGlobals.WebServerClientSocket, sCommand, strlen( sCommand ), 0); #ifdef _WIN32 closesocket( RMGlobals.WebServerClientSocket ); #else close( RMGlobals.WebServerClientSocket ); #endif return 0; }
-
Such mal bitte den jüngsten Thread bezgl. Netzwerkprogrammierung in diesem Forum raus.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-