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 wird 😞

    Kann 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 int

    int 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.




Anmelden zum Antworten