Mit UDP Daten von einem fremden Server empfangen?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Megamag

Betreff: Mit UDP Daten von einem fremden Server empfangen?

BeitragDo, Jan 29, 2009 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Folgendes:
Ich habe ein Programm, dass konstant irgendwelche Daten über UDP an die IP
127.0.0.1 (localhost) und den Port 3333 sendet. Die Frage ist:
Wie kann ich mit Blitz3D diese Nachrichten empfangen und auswerten? Gibt
es in BB überhaupt Möglichkeiten mit UDP zu kommunizieren? In der BB-Hilfe
stand nämlich nichts von solchen Kommandos. ICh hoffe, ihr könnt mir helfen.

tedy

BeitragDo, Jan 29, 2009 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Da hast du aber sehr schlecht in der hilfe nachgeschaut ...

https://www.blitzforum.de/help/?subcat=3
01010100 01100101 01000100 01111001 00100000 00111010 01000100

Megamag

BeitragDo, Jan 29, 2009 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe es nicht...
Hier habe ich was zum testen gemacht:
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

Stream = CreateUDPStream()

While Not KeyHit(1)
IP = RecvUDPMsg(3333)
Print IP
Flip
Wend

End

Aber da kommt immer nur "UDP Stream doesn't exists".
Und diese message bezieht sich auf die RecvUDPMsg-Zeile.

Noobody

BeitragDo, Jan 29, 2009 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht solltest du dir die Dokumentation zu den Befehlen anschauen, bevor du sie verwendest Wink
Bei CreateUDPStream musst du deinen Port 3333 angeben und bei RecvUDPMsg den Stream, den dir CreateUDPStream zurückgegeben hat.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Megamag

BeitragDo, Jan 29, 2009 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann kommt genau dieselbe Mitteilung....

Noobody

BeitragDo, Jan 29, 2009 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht wäre ein wenig Code nicht schlecht? Ich rate jetzt einfach mal, dass du bei RecvUDPMsg einen falschen Wert angegeben hast.

Hier mal dein Code von oben, korrigiert: Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

Stream = CreateUDPStream(3333)

While Not KeyHit(1)
      IP = RecvUDPMsg(Stream)
      Print IP
      Flip
Wend
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Gast

BeitragDo, Jan 29, 2009 21:15
Antworten mit Zitat
Code: [AUSKLAPPEN]
Global IP, MSG$
Global Stream = CreateUDPStream(3333)

Repeat
   IP = RecvUDPMsg(Stream)
   If IP Then
      MSG$ = ""
      While ReadAvail(Stream)
         MSG$ = MSG$ + Chr(ReadByte(Stream))
      Wend
      Print DottedIP(IP)+":"
      Print "========================================================================="
   EndIf
   
Until KeyDown(1)


Ich hoffe es geht!

Viele grüsse,
Flitztuete95

Megamag

BeitragDo, Jan 29, 2009 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir echt leid, aber jedes mal kommt
diese Mitteilung. Vielleicht kann Blitz3D das einfach
nicht empfangen...

tedy

BeitragDo, Jan 29, 2009 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein es liegt nicht an blitz3d eventuell an blitz4d
01010100 01100101 01000100 01111001 00100000 00111010 01000100

Holzchopf

Meisterpacker

BeitragDo, Jan 29, 2009 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn du IRGENDEIN Programm hast, das ständig nach localhost:3333 sendet und du uns nach UDP-Befehlen fragst, dann schliesse ich daraus, dass dieses irgendeine Programm nicht von dir ist (fremder Server ist da auch noch so n Hinweis...). Und demnach wohl nebst dem irgendeinen noch ein irgendeinanderes existiert, dass diese Daten bereits abhorcht und du uns davon nix gesagt hast. Wen dem so ist, kannst du das vergessen, man kann keinen Stream auf nem Port eröffnen, der bereits belegt ist.
Andernfalls wären genaue Infos zu diesem fremden Server nett.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Megamag

BeitragDo, Jan 29, 2009 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieser "Server" nennt sich TBeta und ist eine Webcam-Tracking-Software.
Sie sendet sogenannte TUIO-Daten über UDP an den Localhost. Von da
können diese von jeglichen Programmen abgeholt werden. Mit Flash funktioniert
es. Nur habe ich keine Lust jetzt extra Flash zu lernen und dachte mir, dass
es vielleicht auch mit Blitz3D geht. Und tedy, vielleicht hast du Recht und es liegt
an mir; ich werde dann wohl doch mit Flash anfangen müssen.

Holzchopf

Meisterpacker

BeitragDo, Jan 29, 2009 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
führ einfach mal folgendes aus:
Code: [AUSKLAPPEN]
If Not CreateUdpStream(3333) Then RuntimeError "Der Port ist bereits belegt."


Wenn du den RuntimeError siehst, weisst du, dass bereits irgendwas auf Port 3333 läuft.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Megamag

BeitragFr, Jan 30, 2009 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, ich hab's jetzt. Ich habe noch einen Gateway laufen lassen, der das
Protokoll blockierte und jetzt geht's. Es kommt zwar immer nur derselbe
Wert an, aber wenigstens kommt was an Very Happy
Ich werde mal sehen, wie ich das jetzt zu konfigurieren habe.
Danke für eure Geduld!

Tankbuster

BeitragFr, Jan 30, 2009 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du es so gemacht hast, wie oben schoneinmal, dann ist klar, warum immer nur der selbe Wert ankommt.

Zitat:
IP = RecvUDPMsg(stream)
Print IP


Das gibt nur die IP des Absenders zurück, aber nicht die Nachricht.
Twitter
Download Jewel Snake!
Windows|Android

Megamag

BeitragFr, Jan 30, 2009 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh^^
Wie kriege ich denn die Nachrichten?

Tankbuster

BeitragFr, Jan 30, 2009 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Indem du RecvUDPMsg(stream) verwendest um zu sehen, ob Nachrichten ankommen, und diese dann mit den Read-Befehlen ausließt. ReadByte, Readline, ect
Twitter
Download Jewel Snake!
Windows|Android

Megamag

BeitragFr, Jan 30, 2009 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, habe ich gemacht.
Jetzt kommt da eine verdammt schnell wechselnde Zahl.
Es sind drei verschiedene. Sie unterscheiden sich, aber sie
verändern sich nicht, wenn andere Messages vom Server gesendet
werden. Ich glaube, ich bin auf dem falschen Weg, das zu lösen.
Ich gebe einfach mal den Code, vielleicht ist DA schon was falsch:
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

Stream = CreateUDPStream(3333)

While Not KeyHit(1)
      IP = RecvUDPMsg(Stream)
      ID = ReadFloat(Stream)
      Text 0,0,"Byte: "+ID
      Flip
      Cls
Wend


Achja: Ich habe Tutorial Codes in C++, C#, Java und Action Script 3. Diese Codes
machen genau das, was ich mit BB machen möchte. Wenn sich jemand also mit einer
der Sprachen auskennt, kann ich den Code hochladen, und vielleicht kann mir dann
jemand erklären, wie ich das in BB umsetzten kann.

Tankbuster

BeitragFr, Jan 30, 2009 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
While Not KeyHit(1)
      IP = RecvUDPMsg(Stream)
      ID = ReadFloat(Stream)
      Text 0,0,"Byte: "+ID
      Flip
      Cls
Wend


Ich rate dir dringend, mehr Tutorials zu lesen. Rolling Eyes
Was macht dein Code? Er ließt jeden Schleifendurchlauf einen Float aus dem Stream aus, und zeigt ihn an. Auch wenn garnichtsmehr im Stream steht.

Aber weil ich denke, dass du das nicht allein hinbekommst, hier ne kleine Hilfe:
Code: [AUSKLAPPEN]
While Not KeyHit(1)
IP = RecvUDPMsg(Stream)
IF IP<>0 Then
ID = ReadFloat(Stream)
Endif
Text 0,0,"Byte: "+ID
Flip
Cls
Wend


Außerdem ist es logisch, dass sich Zahlen schnell verändern, wenn du ihnen jeden Schlaifendurchlauf einen neuen Wert zuweißt.....

Und um Datenstau zu vermeiden, sollstest du in jedem Schleifendurchlauf den kompletten stream auslesen. Ich hoffe, du weißt wenigstens, wie das geht. Ansonsten such mal in der Hilfe unter "Dateien & Streams"
Twitter
Download Jewel Snake!
Windows|Android

Megamag

BeitragFr, Jan 30, 2009 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, jetzt zeigt der nur noch eine Zahl an, die sich trotzdem nicht
verändert. Ich danke für die Hilfe, aber ich schätze, dass es niemals
funktionieren wird.

Tankbuster

BeitragFr, Jan 30, 2009 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Es funktioniert immer ^^

Was sendet eigentlich dein Programm? Darauf kommt es nämlich an. Wenn das andere Programm immer das selbe sendet, kommt natürlich auch immer das selbe an. Wink
Twitter
Download Jewel Snake!
Windows|Android

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group