[TCP] mehrere Nachrichten senden/empfangen?!
Übersicht

![]() |
DerKeksBetreff: [TCP] mehrere Nachrichten senden/empfangen?! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey
Ich habe gerade mal ein kleines Server/Client-System via TCP gecodet... Der Server wird erstellt und liest die kommenden Daten, kommt nichts, schreibt er dass nichts kommt^^ Der Client sendet im 1-Sekunden-Takt etwas ( 3..., 2..., 1..., QUIT! ), jedoch schreibt der Server nur das "3..." und danach kommt nur noch "Kommt nix".. Also irgendwie gehen meine restlichen 3 Strings unterwegs verloren... Bzw. der Server empfängt sie nicht/zeigt sie nicht an... Weiss einer woran das liegt? Zum besseren Verständnis poste ich mal den Code... Server: Code: [AUSKLAPPEN] svr=CreateTCPServer(8866)
If Not svr Print "Server konnte nicht gestartet werden!" WaitKey:End Else Print "Server online!" While Not KeyHit(1) stream=AcceptTCPStream(svr) If stream in$ = ReadString$(stream) Print in$ Delay 2000 Else Print "Kommt nix..." Delay 1000 EndIf Wend CloseTCPServer svr WaitKey End EndIf Client: Code: [AUSKLAPPEN] stream=OpenTCPStream("127.0.0.1", 8866)
If Not stream Print "Server offline oder nicht erreichbar!" WaitKey End Else Print "Verbunden!" WriteString stream, "3..." Delay 1000 WriteString stream, "2..." Delay 1000 WriteString stream, "1..." Delay 1000 WriteString stream, "QUIT!" Print "Alles vorbei!" CloseTCPStream stream WaitKey End EndIf Gruss - DerKeks |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoi,
Du darfst AcceptTCPstream nur einmal pro client machen: Code: [AUSKLAPPEN] svr=CreateTCPServer(8866)
If Not svr Print "Server konnte nicht gestartet werden!" WaitKey:End Else Print "Server online!" repeat stream=AcceptTCPStream(svr) until stream While Not KeyHit(1) in$ = ReadString$(stream) Print in$ Wend CloseTCPServer svr WaitKey End EndIf |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
ReLeNtLeSS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe damit noch nich gearbeitet, aber für mich sieht es so aus als das du den Stream mehrmals abfragen musst! D.h. beim ersten Abfragen überträgt der dir ein "3..." beim zweiten ein "2..."
teste das mal ![]() /Edit: Er war schneller ![]() |
||
![]() |
DerKeks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wenn ich das von Smily richtig verstanden habe, sucht er so lange nach Clients, bis er einen gefunden hat ( Until stream ) und dann erst beginnt die eigentliche Übertragung?...
Ich werds so mal versuchen, danke edit: Bei der Idee von Smily kommt garnichts... Am Anfang "Server online!" und nach dem Senden is alles weg... |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aktuellen Code bitte | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
DerKeks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] svr=CreateTCPServer(8866)
If Not svr Print "Server konnte nicht gestartet werden!" WaitKey:End Else Print "Server online!" Repeat stream = AcceptTCPStream(svr) Ulntil stream While Not KeyHit(1) If stream in$ = ReadString$(stream) Print in$ Delay 2000 Else Print "Kommt nix..." Delay 1000 EndIf Wend CloseTCPServer svr WaitKey End EndIf Edit: Mh... Also nachdem ich BlitzIDE neu gestartet hab und neu geöffnet hab, gehts... Nur wenn dass alles gesendet wurde kommt ein "Memory Access Violation"... Kann man den noch umgehen? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Indem du nicht stupide liest sondern guckst ob überhaupt etwas verfügbar ist zum lesen. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
- Zuletzt bearbeitet von Dreamora am Di, Okt 09, 2007 11:09, insgesamt einmal bearbeitet
![]() |
DerKeks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also mit
If stream <> "" Then Print ReadString$(stream) ? |
||
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich versteh nicht warum der server überhaupt übermittelt das nix kommt oder habe ich das falsch verstanden, also naja wenn der server einmal in einer sekunde an einem client schreibt " es kommt nix " dann ist das überflüssiger traffik beim server und auch bei den clienten. und vorallen laggt es bestimmt irgendwann wenn man mehrere clients startet.
also wenn nix zum weitergeben ist, braucht man auch nix senden. und ja das hier Code: [AUSKLAPPEN] If stream <> Then Print ReadString$(stream)
ist soweit ok nur halt die "" haben vll etwas gestört, ich habe nun leider keine zeit den rest des codes anzusehn, werde es aber nachholen. mfg EDIT: Code: [AUSKLAPPEN] stream=OpenTCPStream("127.0.0.1", 8866)
If Not stream Print "Server offline oder nicht erreichbar!" WaitKey End Else Print "Verbunden!" WriteString stream, "3..." Delay 1000 WriteString stream, "2..." Delay 1000 WriteString stream, "1..." Delay 1000 WriteString stream, "QUIT!" Print "Alles vorbei!" CloseTCPStream stream WaitKey End EndIf ähm Delay in einem Server??? und ähm delay in einem client? damit hältst du den kompletten ablauf des programms an das weisst du oder? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein der Vergleich bringt nix.
Der sagt nicht ob etwas zum lesen drin ist. Schau dir bitte erst Mal http://www.blitzbase.de/menu/2q.htm und http://www.blitzbase.de/menu/2t.htm an bevor du weitere Fragen stellst. Du scheinst dich nicht bis total unzureichend damit auseinander gesetzt zu haben. Ein TCP Stream ist auch ein Stream deswegen kannst du mit den dortigen Befehlen auch überprüfen ob es etwas zum Auslesen hat (readAvail ) etc |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
DerKeks |
![]() Antworten mit Zitat ![]() |
---|---|---|
1.)
Die Delays und das "Kommt nix" waren nur testweise, um zu sehen, ob er nun was empfängt oder nicht. Und das "kommt nix" wurde im Server window angezeigt und nicht an die Clients gesendet ![]() Der Server sendet bei diesem Beispiel garnichts an die Clients. 2.) Ich habe mir die Befehlstabellen zu TCP angeschaut und habe auch meine Programme nach dem Prinzip der dort gezeigten Beispiele aufgebaut. Nur dummerweise wird im Beispiel nur ein String übermittelt, Ich versuche/will jedoch mehrere Strings senden. Trotzdem danke für eure Hilfe |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
3x =
in$ = ReadString$(stream) in$ = ReadString$(stream) in$ = ReadString$(stream) würde dir aber empfelen zuerst ein Kommando zu senden das du weißt was rein kommt Select CMD$ Case "STR3" in1$ = ReadString$(stream) in2$ = ReadString$(stream) in3$ = ReadString$(stream) |
||
![]() |
DerKeks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay Markus ich werds mal so versuchen...
Dann kann das doch auch in eine For...Next Schleife oder? Naja erstmal danke so werd ichs versuchen. |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du jede Sekunde was sendest solltest du es so machen
Verbindung auf machen Senden Verbindung zu machen Warten Verbindung auf machen Senden Verbindung zu machen Warten Verbindung auf machen Senden Verbindung zu machen |
||
![]() |
DerKeks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja gut danke.
So werd ichs versuchen. Heute nicht mehr muss noch was lernen aber morgen. Ich meld mich dann wenns mehr Probleme gibt ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group