UDP - Nachricht kommt nicht an.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Dotkommus

Betreff: UDP - Nachricht kommt nicht an.

BeitragSa, Jan 10, 2009 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal ein hallo ans Forum.
Ich bin relativ neu in Blitz Basic und wollte mich nach direkt play mal an UDP wagen, da hänge ich jetz aber zeit drei tagen....
ich wollte es erstmal ganz spartanisch versuchen aber irgendwie krieg ich keine übertragung zu stande ich hab auch nicht die geringste ahnung wo der fehler liegen könnte vllt sieht ja jemand von euch (mit mehr erfahrung als ich sie hab) wo der fehler liegt.
Ich habe ein programm zum senden an eine ip adresse geschrieben und eins zum empfangen der nachricht.
Das ganze ist zur hälfte aus tutorials zusammengeschustert.Also übernommen.
Ich benutze Biltz 3d V. 1.94

Hier der Sender:

Code: [AUSKLAPPEN]

Dest_IP$ = Input("IP Adresse: ")


Function INT_IP(IP$)
   a1 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
   a2 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
   a3 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
   a4 = Int(IP$)
   Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) + a4
End Function

IP = INT_IP(Dest_IP$)


Print IP
Print "Press Enter..."
WaitKey


sende_stream = CreateUDPStream(8000)
 Print "Stream erstellt."
WriteByte(sende_stream, 23)
 Print "Nachricht geschrieben."
SendUDPMsg sende_stream, IP, 8000
 Print "Nachricht gesendet."
WaitKey


Der Empfänger:

Code: [AUSKLAPPEN]

empfangs_stream = CreateUDPStream(8000)

Repeat
 IP_Adresse = RecvUDPMsg(empfangs_stream)

 If IP_Adresse <> 0 Then
  byte = ReadByte(empfangs_stream)
 End If

 Print "Wait"
 Print "..."

Until MouseDown(2) Or IP_Adresse <> 0

Print "Programm Beenden..."
WaitKey
  • Zuletzt bearbeitet von Dotkommus am Sa, Jan 10, 2009 18:36, insgesamt einmal bearbeitet

ZaP

BeitragSa, Jan 10, 2009 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Annahme, dass beide Programm zur selben Zeit laufen, musst du verschiedene Ports verwenden. Ein Stream pro Port, z.B. 8000 und 8001.
Starfare: Worklog, Website (download)

Tankbuster

BeitragSa, Jan 10, 2009 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
SendUDPMsg sende_stream, IP

du musst noch als letzten Parameter den Port angeben, auf den gesendet werden soll Wink
Twitter
Download Jewel Snake!
Windows|Android
 

Dotkommus

BeitragSa, Jan 10, 2009 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ZaP hat Folgendes geschrieben:
In der Annahme, dass beide Programm zur selben Zeit laufen, musst du verschiedene Ports verwenden. Ein Stream pro Port, z.B. 8000 und 8001.

Die beiden Programme laufen auf 2 unterschiedlichen Rechnern mit unterschiedlichen Internet anschlüssen. Dann muss doch der sende Port des einen Programms der Empfangsport des anderen sein oder?

Tankbuster hat Folgendes geschrieben:

du musst noch als letzten Parameter den Port angeben, auf den gesendet werden soll Wink

Ich hab den Port hinzugefügt. (Auch im Code oben) Das Programm reagirt aber genau so wie vorher auch..
Sad

Kann ich so eine verbundung auch an nur einem rechner testen?

Holzchopf

Meisterpacker

BeitragSa, Jan 10, 2009 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, der Sendeport muss nie der Empfangssport des anderen Programmes sein.
In deinem Fall tippe ich einfach mal darauf, dass die Firewall den Verkehr blockt.

Du kannst übrigens die ganze Netzwerkgeschichte auch einfach auf einem PC lokal testen (vorausgesetzt eben, du verwendest verschiedene Ports), wenn du als Host-IP-Adresse 127.0.0.1 angibst (dann hast du auch keinen Stress mit der Firewall).
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
 

Dotkommus

BeitragSa, Jan 10, 2009 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ok also wenn ich die ip auf 127.0.0.1 stelle und als sendeport 8001 verwende gehts (siehe code)...
Was mich nur verwundert ist das die Windows Firewall (jaja ich weis schon...) mich ja fragt was ich tun möchte und ich es ja eigentlich erlaube, und ich die router firewall auch mal testweise deakttivirt hatte... weis jemand wie ich die UDP übertragung erlauben kann?

Code: [AUSKLAPPEN]
Dest_IP$ = "127.0.0.1"


Function INT_IP(IP$)
   a1 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
   a2 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
   a3 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, "."))
   a4 = Int(IP$)
   Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) + a4
End Function

IP = INT_IP(Dest_IP$)


Print IP
Print "Press Enter..."
WaitKey


sende_stream = CreateUDPStream(8001)
 Print "Stream erstellt."
WriteByte(sende_stream, 23)
 Print "Nachricht geschrieben."
SendUDPMsg sende_stream, IP,8000
 Print "Nachricht gesendet."
WaitKey

Holzchopf

Meisterpacker

BeitragSa, Jan 10, 2009 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Router vor einem Server (also auch der Router an deinem PC, wenn du das Game hostest) muss so konfiguriert sein, dass die, für ihn, unerwarteten UDP-Pakete an deinen PC weitergeleitet werden. Das Stichwort lautet "Port Forwarding", Google und ggf die Forum-Suche wissen wie.
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group