Chat mit UDP

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

progger3D

Betreff: Chat mit UDP

BeitragSo, Feb 28, 2010 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich komme mit meinem kleinen Chat nicht klar,
ich glaube es liegt daran dass ich den Text nur einmal schicke und einmal empfange und das das genau in der selben Zeit passieren muss. WER kann mir helfen Question

Mein Sende und Empfangsstream/

also der host |ich|
Code: [AUSKLAPPEN]
empfang_stream=CreateUDPStream(8000)
sende_stream=CreateUDPStream(8001)
   ;IP_Eingabe$=Input("IP? ")
   Eingabe$=Input("You message: ")
   IP_Eingabe$="127.0.0.1"
   Line=ReadLine(empfang_stream)
   WriteLine(sende_stream,Eingabe$)
   SendUDPMsg sende_stream,IP_Eingabe$,8001

WaitKey

Antwort>Code: [AUSKLAPPEN]
empfang_stream=CreateUDPStream(8001)
sende_stream=CreateUDPStream(8000)
     ;IP_Adresse=RecvUDPMsg(empgang_stream)
     ;IP_String$=DottedIP (IP_Adresse)
Eingabe$=Input("You message: ")
   Line=ReadLine(empfang_stream)
   WriteLine(sende_stream,Eingabe$)
   SendUDPMsg sende_stream,"127.0.0.1",8001

WaitKey

Silver_Knee

BeitragSo, Feb 28, 2010 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
uff also:

1. richtig das muss alles schnell gleichzeitig passieren weil der partner nicht wartet außerdem wurde kein RecvNetMsg ausgeführt. Erst nachdem dieser befehl ausgeführt wurde steht auch alles empfangene im stream.

2. IP_Eingabe ist ein String wie "127.0.0.1" die IP muss aber direkt als integer angegeben werden also zB
127*256*256*256+0*256*256+0*256+1 Forensuche : "INT_IP" wird dir da helfen

3. Beide Programme verwenden beide Ports 8001 und 8000. Das was ich an Robs bb-kurs am doofsten finde: die trennung zwischen sende und empfangsstream bei udp wird leider sehr oft angewandt und dabei werden viele Fehler gemacht:
An jedem PC kann immer nur Ein UDP stream einen Port beobachten da jeder UDP stream senden und empfangen kann. du versuchst beide programme also je 2 Streams auf den port 8000 und 8001 zugreifen zu lassen. Das geht in die Hose.
Mein vorschlag:
Ein stream pro programm: 8001 für das eine 8000 für das andere. je nach dem an welches programm du schickst, musst du an den jeweils anderen port schicken

4. line wird zwar ausgelesen aber nicht angezeigt.. also sieht man erst recht nix.

Probier mal mit den ganzen tipps nen neuen code zu schreiben und stell ihn wieder hier rein, dann können wir weiter arbeiten.
 

progger3D

BeitragSo, Feb 28, 2010 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, das bringt mich enorm weiter, gleich stell ich den neuen Code rein...
EDIT:
ZU 1.: RecvNetMsg steht im Zusammenhang mit DirectPlay sicher, dass ich das brauche!
ZU 2.: Das Forum habe ich nicht gefunden, ich habe aber trotzdem den Integer Wert eingearbeitet.
ZU 3.: Das habe ich geändert.
ZU 4.: Das hat soweit gekplappt, es wurde nur immer "0" ausgeprintet, da keine Nachricht gesendet wurde (Fehler?)

Host
Code: [AUSKLAPPEN]
stream=CreateUDPStream(8000)

   ;IP_Eingabe$=Input("IP? ")
   ;RecvNetMsg
   Eingabe$=Input("Your message: ")
   IP_Eingabe$=127*256*256*256+0*256*256+0*256+1
   Line=ReadLine(stream)
      Print Line
   WriteLine(stream,Eingabe$)
   SendUDPMsg stream,IP_Eingabe$,8001

WaitKey


Code: [AUSKLAPPEN]
stream=CreateUDPStream(8001)

     ;IP_Adresse=RecvUDPMsg(empgang_stream)
     ;IP_String$=DottedIP (IP_Adresse)
Eingabe$=Input("Your message: ")
   Line=ReadLine(stream)
      Print Line
   WriteLine(stream,Eingabe$)
   SendUDPMsg stream,127*256*256*256+0*256*256+0*256+1,8000

WaitKey
  • Zuletzt bearbeitet von progger3D am So, Feb 28, 2010 13:43, insgesamt einmal bearbeitet

ToeB

BeitragSo, Feb 28, 2010 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Und noch ein Tipp : UDP eignet sich eigl. gar nicht für einen chat..Da es sein kann das die Daten nicht ganz oder garnicht ankommen... Nimm lieber TCP....

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

progger3D

BeitragSo, Feb 28, 2010 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
OK Danke ich will es aber aus einem bestimmten Grund mit UDP versuchen! Eine Wette mit meinem Lehrer!

Silver_Knee

BeitragSo, Feb 28, 2010 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hups RecvUDPMsg
 

Nikla3D

BeitragSo, Feb 28, 2010 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
guck dir mal forever und repeat an
 

progger3D

BeitragSo, Feb 28, 2010 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann hab ich mal das nun daraus gemacht!!!

HostCode: [AUSKLAPPEN]
stream=CreateUDPStream(8000)

   
   Eingabe$=Input("Your message: ")
   IP_Eingabe$=127*256*256*256+0*256*256+0*256+1
   Line=ReadLine(stream)
      Print Line
   WriteLine(stream,Eingabe$)
   SendUDPMsg stream,IP_Eingabe$,8001

WaitKey

Code: [AUSKLAPPEN]
stream=CreateUDPStream(8001)

     IP_Adresse=RecvUDPMsg(stream)
     IP_String$=DottedIP (IP_Adresse)
Eingabe$=Input("Your message: ")
Repeat
   Line=ReadLine(stream)
      Print Line
   WriteLine(stream,Eingabe$)
   SendUDPMsg stream,IP_Adresse,8000
Forever

WaitKey

EDIT Arrow Egal in welchen Yeitabschnitten ich die Programme oeffne es wird immer nur Null angezeigt.

count-doku

BeitragSo, Feb 28, 2010 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich hab mal sowas ähnliches Programmiert,
fürs Internet und auch lokal.
Wenn es dich Interessiert, kann ich dir den Code zeigen
und es dir erklären.
Schick mir dann einfach ne PN.


mfg,
count-doku

Eingeproggt

BeitragSo, Feb 28, 2010 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
RecvUDPMsg gehört in die Schleife.
Mal ganz allgemein ein Tipp:
Wir haben hier im Forum eine deutsche BB-Hilfe. In der gibt es Anwendungsbeispiele und in diesem speziellen Fall sogar einen Chat inklusive der erwähnten "int_IP" Funktion. Also alles an einem Fleck und bereit für dich Wink Folge einfach dem verlinkten RecvUDPMsg
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Silver_Knee

BeitragSo, Feb 28, 2010 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
außerdem musst du line als string deklarieren
 

progger3D

BeitragMo, März 01, 2010 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, ich habe es soweit geschafft,
werd damit ein wenig romprobieren bis ich die nächste Frage habe Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group