Senden von UDPStream an eigenen Computer[gelöst]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nikla3D

Betreff: Senden von UDPStream an eigenen Computer[gelöst]

BeitragDo, Feb 11, 2010 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich will um mich in das Thema Netzwerke ein wenig einzuarbeiten ein Programm schreiben, dass sich mit einem anderen Programm auf meinem Computer unterhält. Dabei soll nur ein Programm senden und das andere empfangen.

SendeProgramm:Code: [AUSKLAPPEN]
sende_stream = CreateUDPStream(1680)
IP_Adresse = RecvUDPMsg(sende_stream)
WriteLine(sende_stream,"Code")
SendUDPMsg sende_stream, :?:  ,1680


WaitKey
 


EmpfangsProgramm: Code: [AUSKLAPPEN]
 empfangs_stream = CreateUDPStream(1680)
byte = ReadLine(empfangs_stream)
Print byte
WaitKey


Meine Frage:
Was muss ich für eine IP-Adresse eingeben, eigentlich keine oder, soll ja ein locales Programm werden?
Oder gibt es eine Art der Übertragung, in der ich gar keine IP-Adresse eingeben muss
  • Zuletzt bearbeitet von Nikla3D am Fr, Feb 12, 2010 21:11, insgesamt einmal bearbeitet

Pummelie

BeitragDo, Feb 11, 2010 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Als IP musst du local 127.0.0.1 angeben, eine Möglichkeit ohne wäre Namepipe, such einfach danach.

Edit: Puh, knapp Smile
It's done when it's done.
  • Zuletzt bearbeitet von Pummelie am Do, Feb 11, 2010 18:36, insgesamt einmal bearbeitet

blackgecko

BeitragDo, Feb 11, 2010 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Über die IP-Adresse 127.0.0.1 (localhost) erreichst du den eigenen Computer.
Edit: Zu langsam...
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

Nikla3D

BeitragDo, Feb 11, 2010 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke euch beiden

EDIT: Die Punkte der IP nimmt er aber nicht an

Code: [AUSKLAPPEN]
sende_stream = CreateUDPStream(1680)
IP_Adresse = RecvUDPMsg(sende_stream)
WriteLine(sende_stream,"Code")
SendUDPMsg sende_stream, 127.0.0.1 ,1680


WaitKey


EDIT: Muss ich die Punkte weglassen?

ozzi789

BeitragDo, Feb 11, 2010 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch möglich wäre es in eine Datei zu schreiben, und danach wieder auszulesen.
Ist nicht so schnell, wie die Netzwerklösung, aber manchmal ist es ziemlich nützlich.

Zmb, habe für unsere Klasse einen kleinen Chat geschrieben, welcher die Nachrichten als txt file auf dem Gruppenlaufwerk (verschlüsselt) speichert, so kann man untereinander in der Klasse kommunizieren Wink

mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

blackgecko

BeitragDo, Feb 11, 2010 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
EDIT: Die Punkte der IP nimmt er aber nicht an

Du musst die IP in Anführungszeichen setzen.
Code: [AUSKLAPPEN]
SendUDPMsg sende_stream, "127.0.0.1" ,1680
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Pummelie

BeitragDo, Feb 11, 2010 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, das ist zwar eine Lösung aber wenn man es anders machen kann, solte man dies tuen, da es relativ langsam ist.

(Ja ich weiß "langsam" gibt es unter pc´s eigentlich nicht)
It's done when it's done.
 

Nikla3D

BeitragDo, Feb 11, 2010 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt habe ich noch ein weiteres Problem.

Wenn ich den kleinen Text schicke, sagt er " Stream does not exist"
Wenn ich den kleinen Text nicht schicke, printet er Null aus!

Null: keine Nachricht bekommen

EDIT: Das mit dem Anführungszeichen haben die dann wohl in meinem Tutorial vergessen! Wink

Pummelie

BeitragDo, Feb 11, 2010 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hm also, ohne jetzt den direckten fehler zu sehen, kann ich sagen, das Text nicht übertragen wird, da deu keine Strings nutzt.
It's done when it's done.

Eingeproggt

BeitragDo, Feb 11, 2010 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
hab schon lang nix mehr mit UDP gemacht aber die UDP-Verbindungsfunktionen brauchen doch die "Int IP".
Wer in die hilfe schaut, findet die Funktion die die IP-Adresse dahin gehend umrechnet.

EDIT: Naja, nicht ganz richtig. UDP hat ja keine "Verbidnungsfunktion"
Aber in der Onlinehilfe zu SendUDPMsg ist trotzdem erkärt was ich meine mit der IntIp Wink
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Silver_Knee

BeitragDo, Feb 11, 2010 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier die ip umrechnung:

0+0*256+0*256*256+127*256*256*256

BladeRunner

Moderator

BeitragFr, Feb 12, 2010 5:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Das üben wir nochmal, silver_knee. 127.0.0.1
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Nikla3D

BeitragFr, Feb 12, 2010 9:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Brauche ich dann UDPStreamPort
oder UDPStreamIP

denn beides liefert eine Integer_IP-Adresse zurück Question Question Question

EDIT:
So sieht mein Empfang_Stream aus, aber immer ist er noch falsch:
Code: [AUSKLAPPEN]
sende_stream$ = CreateUDPStream(1680)
IP_Adresse = RecvUDPMsg(sende_stream$)
WriteLine(sende_stream$,"Code")
;Port = UDPStreamPort (sende_stream)
IP_String$ = DottedIP("127.0.0.1")
SendUDPMsg sende_stream$, IP_String$ ,1680


WaitKey
 

Silver_Knee

BeitragFr, Feb 12, 2010 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
SendUDPMsg sende_stream$, 1+0*256+0*256*256+127*256*256*256 ,1680

[Danke BR] Du musst die Integer IP übergeben
DottedIP macht genau das andere:


DottedIP(1+0*256+0*256*256+127*256*256*256) erzeugt "127.0.0.1"

@vvvvHolzchopfvvvvv
Dummes Copy&Paste
  • Zuletzt bearbeitet von Silver_Knee am Fr, Feb 12, 2010 19:48, insgesamt einmal bearbeitet

Holzchopf

Meisterpacker

BeitragFr, Feb 12, 2010 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast schon wieder eine 1 vergessen xD

Übrigens kann man die Localhost-IP auch einfach in der Hexadez-Notation $7F000001 angeben. Oder man kann sie zur Laufzeit mitBlitzBasic: [AUSKLAPPEN]
CountHostIPs("localhost")
HostIP(1)
ermitteln

mfG
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
 

Nikla3D

BeitragFr, Feb 12, 2010 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann sieht mein Sende_Stream so aus:Code: [AUSKLAPPEN]
sende_stream$ = CreateUDPStream(1680)
IP_Adresse = RecvUDPMsg(sende_stream$)
WriteLine(sende_stream$,"Code")
SendUDPMsg sende_stream$,1+0*256+0*256*256+127*256*256*256 ,1680


WaitKey


und mein Empfangs_Stream so aus:
Code: [AUSKLAPPEN]
empfangs_stream = CreateUDPStream(1680)
;byte = ReadFile(empfangs_stream)
empfangs_stream= ReadLine(empfangs_stream)
Print empfangs_stream


WaitKey
 


Doch es klappt noch nicht! Crying or Very sad

Pummelie

BeitragFr, Feb 12, 2010 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, du kannst es ja mal mit TCP versuchen.
Ich finde das TCP Protokoll sehr viel logischer.

Hier mal deine Code in TCP:

Senden:
BlitzBasic: [AUSKLAPPEN]
Local host=CreateTCPServer(1680),stream
Repeat
stream=AcceptTCPStream(host)
If stream <> 0 Then
WriteLine(stream,"Code")
CloseTCPStream(stream)
WaitKey
End
EndIf
Until KeyDown(1) = 1
End


Empfangen:
BlitzBasic: [AUSKLAPPEN]
Local stream=OpenTCPStream("127.0.0.1",1680)
Print(ReadLine$(stream))
WaitKey
End
It's done when it's done.
 

Lion

BeitragFr, Feb 12, 2010 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
wahrscheinlich empfängt er nicht genau in dem moment was, wo er das programm ausführt. und er versucht ja auch nur einmalig was auszulesen, wirst du schon sehr schnell sein müssen^^
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x
 

Nikla3D

BeitragFr, Feb 12, 2010 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, dann werde ich mich mal mit TCP Protokollen auseinandersetzten

Silver_Knee

BeitragFr, Feb 12, 2010 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Beide können nicht den Selben port benutzen
Dein PC wird streiken und das als 2. Gestartete programm wird bei CreateUDPStream eine 0 für "Port blockiert" zurückbekommen. Nimm 2 verschiedene Ports und lass mal dein empfangsprogramm etwas warten:
Code: [AUSKLAPPEN]
repeat
delay 100
until recvudpmsg(empfangs_stream)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group