Server / Client Programmierung Frage



  • Eine Frage zum Server , hier mein bisheriger Code :

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    	rc=startWinsock();
    	if(rc!=0)   
    		return 1;
    	acceptSocket=socket(AF_INET,SOCK_STREAM,0);
    	if(acceptSocket==INVALID_SOCKET)
    		return 1;
    	memset(&addr,0,sizeof(SOCKADDR_IN));
    
    	addr.sin_family=AF_INET;
    	addr.sin_port=htons(12345);
    	addr.sin_addr.s_addr=ADDR_ANY;
    
    	rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
    
    	if(rc==SOCKET_ERROR)  
    		return 1;
    
    	rc=listen(acceptSocket,10);
    	if(rc==SOCKET_ERROR)  
    		return 1;
    
    	connectedSocket=accept(acceptSocket,NULL,NULL);
    	if(connectedSocket==INVALID_SOCKET)   
    		return 1;
    
    	while(rc!=SOCKET_ERROR)
    	{	
    		rc=recv(connectedSocket,buf,sizeof(buf),0);
    
    		if(rc==0 || rc==SOCKET_ERROR)     
    			break;
    
    		buf[rc]='\0';
    	}	
      closesocket(acceptSocket);
      closesocket(connectedSocket);
      WSACleanup();
      return 0;
    }
    

    Jetzt moechte ich 2 Sachen :

    (1) Mehrere Clients auf einmal koennen zum Server connecten
    (2) Wenn der Client disconnected soll die Server-Datei nicht beenden sondern von vorne anfangen

    Wie bekomme ich das hin ?





  • Hallo,

    hier ist ein guter Link wo sowas erstellt wurde:
    http://www.pronix.de/pronix-637.html

    MfG, Heimdall83



  • Mit einem "return" beendest du dein Programm. Wenn du willst, dass es neu gestartet wird, dann musste das rausmachen und alles in eine while(1)-Schleife. Für mehrere Clients würde ich auch die select-Methode verwenden. Das Tutorial auf der von CodeFInder geposteten Page ist Klasse.


Anmelden zum Antworten