Kein Datenempfang nach erneutem Verbinden
-
Hi,
hab da nen Problem,
ich verbinde mich mit meinem Server am Client und sende Daten, das funktioniert einwandfrei. Danach trenne ich am Client die Verbindung. So wenn ich mich nun wieder mit dem Server verbinde bzw es versuche. Weiß nicht genau ob es klappt, dann kann ich keine Daten senden.Hier der code vom Server.
fromsocket = socket(PF_INET,SOCK_STREAM,0); if(fromsocket == -1){ PrintLog("Konnte den Socket nicht erstellen"); } /* Adresse zum 'Lauschen' definieren */ fromaddr.sin_family = PF_INET; fromaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* eine Anfrage kann von jeder IPAdresse kommen */ fromaddr.sin_port = htons(SERVER_PORT); if(bind(fromsocket, (struct sockaddr *)&fromaddr, sizeof(fromaddr)) == -1){ PrintLog("Kann den Socket nicht binden"); } /* Socket 'horchen' lassen; die maximale Länge der Warteschlange wird auf 3 gesetzt */ if(listen(fromsocket, 3) == -1){ PrintLog("Konnte den Socket nicht listen"); } char *buffer; buffer = new char[1024]; int status; PrintLog("Servermanager einwandfrei gestartet"); while(1) { if((client = accept(fromsocket, NULL, NULL)) == -1) { PrintLog("Konnte den Socket nicht auf accept setzen"); } else { status = 1; } while(status = 1) { if((recv(client,buffer,1024,0))!=0) { printf("%s\n",buffer); } else { status = 0; } } }
habe sämtliche tuts durchgeforstet aber nix gefunden...
hoffe ihr könnt helfen.
-
Hallo,
du solltest den 'client'-Socket auch wieder schliessen, bevor der Server wieder
in den accept-Status zurueckkehrt. Weiss aber nicht genau, ob es daran liegt,
denn der Code sieht ansonsten ok aus.mfg
v R
-
zeig auch mal den code deines clients vielleicht is an dem ja was nicht
in ordnung.
-
am code des clients liegt es sicherlich nicht, ist ja auch so, wenn ich das programm starte mich verbinde daten sende verbindung beende programm beende, programm neustarte mich verbinden will und daten senden will, der gleiche fehler und dann wird ja auf jedenflal der socket neu erstellt beim clienten, also liegt es ja am server...
-
ich weis nicht was du dem server schickst.
schau aber mal nach ob die daten vom client mit '\0' abgeschlossen
werden (wegen dem printf im server nach dem recv).
vielleicht passiert da was schlimmes (buffer ist nicht 0-terminiert)...
-
while(status = 1)
Was ist das denn für ein Scheiß??
-
hab da was mit probiert, nur das klappte leider nicht wirklich...
-
da musste auch == nehmen sonst ist es eine zuweisung. (immer wahr)
-
Mit "while(status == 1)" funktioniert das Programm einwandfrei.
-
man ich bin aber auch nen vollspaten, das mir das net aufgefallen ist!! Vielen Dank
-
snoopdog schrieb:
man ich bin aber auch nen vollspaten
-
snoopdog schrieb:
am code des clients liegt es sicherlich nicht, ist ja auch so, wenn ich das programm starte mich verbinde daten sende verbindung beende programm beende, programm neustarte mich verbinden will und daten senden will, der gleiche fehler und dann wird ja auf jedenflal der socket neu erstellt beim clienten, also liegt es ja am server...
Ich bezog mich auf den Client-Socket im Server. Du schliesst diesen nicht,
nachdem du mit der Abarbeitung fertig bist.mfg
v R