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 anfangenWie bekomme ich das hin ?
-
Schau mal hier: http://c-worker.ch/tuts/select.html
-
Hallo,
hier ist ein guter Link wo sowas erstellt wurde:
http://www.pronix.de/pronix-637.htmlMfG, 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.