Autor Beitrag
curtiss
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: Mi 15.11.06 16:03 
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.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
if puffer = '' then //Wenn im Puffer nichts steht
            {if puffer2 = '' then}
              begin
                befehl := 'INSERT INTO `user` ( `nick` , `pw` , `email` , `geb` , `geschlecht` , `herkunft` , `beruf` )VALUES ("'+nick+'", "'+pw+'", "'+email+'", "'+geb+'", "'+sex+'", "'+herkunft+'", "'+beruf+'");'//Schreibe den User Insert für Datenbank in Befehl
                ts:=tstringlist.Create; //Erstelle wieder TS

                db1.sendcmd(befehl,false,ts); //Schicke befehl wieder an die Datenbank, Speicher in TS

                ts.free; //Zerstöre TS
                db1.DisConnectMysqlDB(s); //Schließe Verbindung
                log.lines.add('<- USERADD -> '+nick+' erfolgreich');
                showmessage('Hmkay');
                serversocket1.Socket.SendText(Syntax[cmdS_LOGIN].Text+#13+'2'+#13);
              end
            else // Wenn im Puffer etwas steht
              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.
ausblenden Delphi-Quelltext
1:
serversocket1.Socket.SendText('FU!');					
Danny W.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Mi 15.11.06 16:07 
was passiert wenn du das

db1.DisConnectMysqlDB(s);
mal rausnimmst? bzw. onDestroy bei Form1, reinhaust?

:P

_________________
"Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt :("
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
serversocket1.Socket.SendText(Syntax[cmdS_LOGIN].Text+#13+'2'+#13); // Achtung! Falsch!					

(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

_________________
There are 10 types of people - those who understand binary and those who don´t.
curtiss Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 15.11.06 16:47 
Moin!

Fällt mir gerade noch so am Rande auf, das hier:
ausblenden 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. ;)

cu
Narses

PS: Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? ;) Danke.

_________________
There are 10 types of people - those who understand binary and those who don´t.
curtiss Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 23.11.06 01:09 
Moin!

user profile iconcurtiss hat folgendes geschrieben:
kann mir eben vieleicht jemand netterweise den code zum antworten an den client vom server aus schreiben??

ausblenden Delphi-Quelltext
1:
ServerSocket1.Socket.Connections[?].SendText('Hallo');					

Dabei ist das "?" die Nummer der Socketverbindung, an die gesendet werden soll.

user profile iconcurtiss hat folgendes geschrieben:
Finde im tut nix dazu!!!

Schau mal beim Flüstern, das ist genau das, was du brauchst. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
curtiss Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: 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 ;-)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 23.11.06 01:46 
Moin!

user profile iconcurtiss hat folgendes geschrieben:
wie kann ich denn senden ohne über die listbox zu gehen? Weil wenn dass unsicher ist, dann lieber gleich richtig!

In diesem Fall nimm einfach gleich den Protokoll-Adapter aus dem Bin-Proto-Tut, der kann eine Session-ID verwalten. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.