Entwickler-Ecke
Internet / Netzwerk - fehler beim versenden eines strings vom server zum client
curtiss - Mi 15.11.06 16:03
Titel: fehler beim versenden eines strings vom server zum client
Hi!
Ich hatte ja vorher schonmal gefragt wegen nem protokoll und habe mir dann dass empfohlene
Tutorial zum gleichem Thema durchgelesen und umgesetzt.
Bis jetzt funktioniert es bestens, bis zu dem Zeitpunkt wo der server einen befehl vom client
bekommt und eine antwort senden soll. Der Client versucht sich zu registrieren worauf der server in einer
DB nachschaut ob dass geht usw. . . Je nachdem ob ja oder nein gibt es eine entsprechende antwort die der Server senden soll.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| if puffer = '' then begin befehl := 'INSERT INTO `user` ( `nick` , `pw` , `email` , `geb` , `geschlecht` , `herkunft` , `beruf` )VALUES ("'+nick+'", "'+pw+'", "'+email+'", "'+geb+'", "'+sex+'", "'+herkunft+'", "'+beruf+'");'; ts:=tstringlist.Create; db1.sendcmd(befehl,false,ts); ts.free; db1.DisConnectMysqlDB(s); log.lines.add('<- USERADD -> '+nick+' erfolgreich'); showmessage('Hmkay'); serversocket1.Socket.SendText(Syntax[cmdS_LOGIN].Text+#13+'2'+#13); end else begin log.lines.add('<- USERADD -> '+nick+' fehlgeschlagen : Nick Existiert bereits'); serversocket1.Socket.SendText(Syntax[cmdS_LOGIN].Text+#13+'0'+#13); end |
Dass 'Hmkay' gibt mir der server noch aus dann bekomme ich eine Fehlermeldung !
"Windows Socket Fehler : Eine anforderung zum senden oder empfangen von daten wurde verhindert, da der socket nicht verbunden ist und (beim senden über ein Datagrammsocket mit einem sendto aufruf) keine Adresse angegeben wurde(10057), auf API 'send'"
Habe ich etwas vergessen? oder syntax was falsch gemacht ?
Habe Probeweise auch einfach einen string versendet, da kriege ich die gleiche meldung.
Delphi-Quelltext
1:
| serversocket1.Socket.SendText('FU!'); |
Danny W. - Mi 15.11.06 16:07
was passiert wenn du das
db1.DisConnectMysqlDB(s);
mal rausnimmst? bzw. onDestroy bei Form1, reinhaust?
:P
Narses - Mi 15.11.06 16:24
Moin!
Du darfst nicht den ServerSocket zum Senden verwenden, der wartet nur auf neue Clients! :mahn: Also konkret das hier:
Delphi-Quelltext
1:
| serversocket1.Socket.SendText(Syntax[cmdS_LOGIN].Text+#13+'2'+#13); |
(Das steht aber auch nirgendwo in dem Tut, mal so nebenbei... ;))
Du mußt an die bereits aufgebaue(n) Client-Verbindung(en) senden, die im .Connections[]-Array des ServerSockets stehen (siehe Tutorial!).
cu
Narses
curtiss - Mi 15.11.06 16:29
Danke ^^
bin noch nicht ganz so der allwissende ^^ und es war nachts
Aber hier nochmal ein dickes lob an dich und dein tutorial!!!!
MFG
Narses - Mi 15.11.06 16:47
Moin!
Fällt mir gerade noch so am Rande auf, das hier:
Delphi-Quelltext
1: 2: 3:
| log.lines.add('<- USERADD -> '+nick+' erfolgreich'); showmessage('Hmkay'); serversocket1.Socket.SendText(Syntax[cmdS_LOGIN].Text+#13+'2'+#13); |
Wenn du Dialoge oder andere Benutzerinteraktionen in deinem Parser/Prozessor hast, dann gibt es noch eine Menge Dinge zu beachten, damit dir das Ganze nicht irgendwann um die Ohren fliegt. :? Siehe
Tutorial Teil 2 [
http://www.delphi-library.de/topic_TerminatorzeichenProtokollTutorial++2+Sockets+v100_65487.html]. ;)
cu
Narses
PS: Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? ;) Danke.
curtiss - Mi 15.11.06 17:08
dass "hmkay" war ja nur zu testzwecken drinn damit ich dass problem eingrenzen konnte!
kommt jetzt natürlich wieder raus! ^^
und als beantwortet markiere ich es jetzt auch
MFG und danke nochmal
curtiss - Do 23.11.06 00:14
kann mir eben vieleicht jemand netterweise den code zum antworten an den client vom server aus schreiben??
Finde im tut nix dazu!!!
MFG
Narses - Do 23.11.06 01:09
Moin!
curtiss hat folgendes geschrieben: |
kann mir eben vieleicht jemand netterweise den code zum antworten an den client vom server aus schreiben?? |
Delphi-Quelltext
1:
| ServerSocket1.Socket.Connections[?].SendText('Hallo'); |
Dabei ist das "?" die Nummer der Socketverbindung, an die gesendet werden soll.
curtiss hat folgendes geschrieben: |
Finde im tut nix dazu!!! |
Schau mal beim Flüstern, das ist genau das, was du brauchst. ;)
cu
Narses
curtiss - Do 23.11.06 01:41
wie kann ich denn senden ohne über die listbox zu gehen? Weil wenn dass unsicher ist, dann lieber gleich richtig!
Sry, ich hatte immer im 2ten tut gelesen und dass erste nicht mehr aufgemacht ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!