prob mit winsock...
-
Hi, ich wollte mal die Winsock Sache nin ne eigene Klasse basteln, das ich des net immer alles hinschrieben muss, nur leider reagiert mein programm nciht auf die listen() Funktion von Winsock. Der Socket wird erstellt und er bindet sich auch an den Port. Nur eben geht er nciht in den listen Modus über. d.h. das programm wird beendet.
hier der codeint SocketClass::SocketStartServer(int Port,int connections) { memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(Port); //addr.sin_addr.s_addr= ADDR_ANY; rc = bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)); if(rc==SOCKET_ERROR) { printf("Fehler beim aufbauen des Ports\n"); return 0; } else { printf("Erfolgreich mit Port: %d :verbunden\n",Port); return 1; } rc=listen(s,10); if(rc==SOCKET_ERROR) { printf("Fehler: listen, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("acceptSocket ist im listen Modus....\n"); } /*connectedsocket=accept(s,NULL,NULL); if(connectedsocket==INVALID_SOCKET) { printf("Fehler: accept, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Neue Verbindung wurde akzeptiert!\n"); }*/ }
und aufrufen tu ich die Methode so.
sc->SocketStartServer(444,10);
-
welchen fehler code gibt dir denn dein programm aus??
damit du das siehst änder den code mal wie folgt.
[code]
if(rc==SOCKET_ERROR){
printf("Fehler: listen, fehler code: %d\n",WSAGetLastError());
//return 1;
}
else
{
printf("acceptSocket ist im listen Modus....\n");
}[/code]
dann bekommst du ne nummer ausgegeben. dann schaust du unter http://msdn.microsoft.com/library/ mal nach was das zubedeuten hat!
wenn du dann immer noch nicht weiter weißt poste hier einfach mal diese nummer (am besten mit der beschreibung von der url die ich dir gerade gegeben habe)[ Dieser Beitrag wurde am 17.03.2003 um 18:34 Uhr von Monchi*96 editiert. ]
-
ja das ist ja das prob, der zeigt mir nicht den fehlercode an,aber auch nciht das er in der if ist.
rc=listen(s,1); if(rc==SOCKET_ERROR) { printf("Fehler: listen, fehler code: %d\n",WSAGetLastError()); //return 1; } else { printf("acceptSocket ist im listen Modus....\n"); }
so als wen nder die lsiten funktion gar nicht aufruft
-
aah hab einen Fehler gefunden. Hab nen Fehler bei den return 's gemacht.
nur das jetzige Problem. der stellt sich zwar in den listen modus, nur beendet sich dann sofort.
D.h. er gibt mir den string aus: printf("acceptSocket ist im listen Modus....\n");nur danach wird das problem sofort beendet.
in der main funktion rufe ich die Methode so auf.
sc->SocketStartServer(444,10);
ist des richtig?
-
also ich hab es nun hinbekommen, der baut die verbindung zwischen client und server auf. Nur danach schließe nsich beide.... warum? was muss ich machen, das sie sich nicht schließen??