UDP Nachricht kommt nicht an...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Düsi

Betreff: UDP Nachricht kommt nicht an...

BeitragSa, Mai 02, 2009 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey. Smile
Ganz simples Problem: Client sendet etwas, Server bekommt aber nichts...

Server:
Code: [AUSKLAPPEN]
[...]
Global UDP2 = CreateUDPStream(3456)
[...](Hauptschleife)
;--> Empfange Pings
If RecvUDPMsg(UDP2) > 0 Then
   tmpIP = UDPMsgIP(UDP2)
   tmpPort = UDPMsgPort(UDP2)
   u2Message = ReadByte(UDP2)
   
   Echo ""
   Echo ""
   Echo "Empfange PING"
   [...]
EndIf
[...]

Die If Bedingung wird nie erfüllt, RecvUDPMsg(UDP2) gibt also immer 0 zurück, solange der Client folgendes ausführt:
Code: [AUSKLAPPEN]
[...]
Global UDP2 = CreateUDPStream()
[...](Hauptschleife)
;--> Sende
If uLastPing-MilliSecs() < -2500 Then
   WriteByte(UDP2, u2Ping)
   WriteString(UDP2, accountID)
   SendUDPMsg(UDP2, INT_IP("127.0.0.1"), 3456)
   
   ;--> DEBUGE      
   Color 255, 255, 255
   Print "Sende PING ("+UDP2+"), ("+INT_IP("127.0.0.1")+")"
EndIf
[...]

Die If Bedingung wird nach 2,5sekunden erfüllt... Dennoch kommt beim Server nichts an.
Könnte es daran liegen, dass Server und Client zeitgleich über UDP und TCP kommunizieren? Oder ist irgendwo im Code ein Fehler den ich seit Stunden nicht finde? -.-

MfG

Dottakopf

BeitragMo, Mai 04, 2009 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm scheint alles richtig zu sein. Bist du dir sicher, das der client wirklich ein signal sendet. Also ist diese zeile

Code: [AUSKLAPPEN]

If uLastPing-MilliSecs() < -2500 Then


wirklich mal true?
Zur not mal mit debug log drucharbeiten und checken ob iwo varriablen falsch befüllt sind

~Edit~
*hopla habs nicht ganz gelesen*

was meisnt du mit :
"dass Server und Client zeitgleich über UDP und TCP kommunizieren? "


Gruß
Dottakopf
  • Zuletzt bearbeitet von Dottakopf am Mo, Mai 04, 2009 15:33, insgesamt einmal bearbeitet
 

Düsi

BeitragMo, Mai 04, 2009 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Dottakopf hat Folgendes geschrieben:
Hm scheint alles richtig zu sein. Bist du dir sicher, das der client wirklich ein signal sendet. Also ist diese zeile

Code: [AUSKLAPPEN]

If uLastPing-MilliSecs() < -2500 Then


wirklich mal true?
Zur not mal mit debug log drucharbeiten und checken ob iwo varriablen falsch befüllt sind

Gruß
Dottakopf

Jops, das ist wirklich True, der Print Befehl daruntert wird ausgeführt...
Ansonsten könnten eigtl keine Variablen mehr falsch dastehen... INT_IP() ist die Funktion aus der Hilfe, 127.0.0.1 ist die richtige IP und 3456 auch der richtige Port... Sad
Ich versteh's einfach nicht... Sad

EDIT:
Zitat:
was meisnt du mit :
"dass Server und Client zeitgleich über UDP und TCP kommunizieren? "

Dass ich sowohl über einen TCP Server/Stream also auch über einen UDP Stream Daten zwischen Client - Server versende.

MfG

Starwar

BeitragMo, Mai 04, 2009 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Wenn du das Programm an einem Compuer testest: Jede Instanz braucht dann CreateUDPStream einen andern Port.
Wenn du an zweien Testest: Firewall aus? Evtl. Ports im Router freigegeben?

Meine Linkfavoriten:
http://blitzbasic.com/codearcs...?code=2263
http://blitzbasic.com/codearcs...?code=2261

MFG
 

Düsi

BeitragMo, Mai 04, 2009 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Starwar hat Folgendes geschrieben:
Hi,
Wenn du das Programm an einem Compuer testest: Jede Instanz braucht dann CreateUDPStream einen andern Port.
Wenn du an zweien Testest: Firewall aus? Evtl. Ports im Router freigegeben?

Meine Linkfavoriten:
http://blitzbasic.com/codearcs...?code=2263
http://blitzbasic.com/codearcs...?code=2261

MFG

Ich teste es nur an einem PC, Firewall o. Ä. kann also nicht die Ursache sein.
Der Server hat den Port 3456, die Clients haben keinen angegebenen Port, Blitzbasic sucht also einen freien... Daran kann es nicht liegen. :/

(Deine Linkfavoriten sind im übrigen 404-Errorseiten Very Happy)

BladeRunner

Moderator

BeitragMo, Mai 04, 2009 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte dich bitten nicht immer den Vorpost zu zitieren. Danke.
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

Dottakopf

BeitragMo, Mai 04, 2009 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
hm bin jetzt nicht daheim, aber...

ich benütze für mein online projekt auch die INT_ip funktion. Dürfte keine Probleme machen....

Benützt du DHCP ? wenn ja stell mal auf statisch um und versuche es mit dieser ip(die du festgelegt hast) erneut. Und versuch mal einen anderen Port, vieleicht wird dieser von irgendeinem programm benützt. Bespielsweise dürfte der port 7142 keine Probleme machen.(allgemein solltest du ports ab 7000 für bb projekte verwenden, mein ausbilder meinte mal, das es da so ne richtlinie gibt)

Wenn das nicht geht, solltest du mal den kompletten code posten, vielleicht hast du irgendwo noch einen kleineren Fehler drin.

Bin erst heute abend wieder daheim, wenn dir da noch nicht geholfen werden konnte, schick ich dir mal beispiel code

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
 

Düsi

BeitragMo, Mai 04, 2009 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Dottakopf hat Folgendes geschrieben:
Benützt du DHCP ? wenn ja stell mal auf statisch um und versuche es mit dieser ip(die du festgelegt hast) erneut.

Wops, dafür bin ich nun zu dumm. Very Happy

Dottakopf hat Folgendes geschrieben:
Und versuch mal einen anderen Port, vieleicht wird dieser von irgendeinem programm benützt. Bespielsweise dürfte der port 7142 keine Probleme machen.(allgemein solltest du ports ab 7000 für bb projekte verwenden, mein ausbilder meinte mal, das es da so ne richtlinie gibt)

Macht leider keinen Unterschied

Dottakopf hat Folgendes geschrieben:
Bin erst heute abend wieder daheim, wenn dir da noch nicht geholfen werden konnte, schick ich dir mal beispiel code

Immer gern. Smile

mfg

Dottakopf

BeitragMo, Mai 04, 2009 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
hier zwar etwas verspätet, aber besser als nichts Wink

Lauffähiger code: (Achtung Ip beim client sollte natürlich angepasst werden)

client:
Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()


server_IP$= "192.168.106.33"
server_port = 7142


udp_stream = CreateUDPStream()


WriteByte(udp_stream,1)
SendUDPMsg udp_stream,INT_IP(server_ip),server_port





Repeat
Cls







Flip
Until KeyHit(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



server :
Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()


server_port = 7142
udp_stream = CreateUDPStream(server_port)

Repeat
If KeyHit(1) Then End

                  If RecvUDPMsg(udp_stream)<>0 Then
                     Print "olla da ist ja eine msg"
                     FlushKeys()
                     WaitKey
                  End If
                  
Forever




ich vermute mal, das du da auch ohne komentare schlau wirst! (bissi denken muss scho dabei sein, ist aber super einfach)
Mit dieser Basis müsste eigentlich alles klappen.


So stelle ich auf statische ip um :
Start-> Einstellungen->Netzwerkverbindungen->Lan-verbindung(die aktive..)->Eigenschaften->Internetprotokol(TCP/IP) und da auf statische IP umstellen.

Achtung: !!!!
Wenn du hier etwas verstellst, kann es sein das du nicht mehr ins internet kommst, also am besten ein screen machen!

Beispiel konfiguration :
IP : 192.168.100.xxx
subnetzmaske 255.255.255.0
Gateway 192.168.100.<Router IP>

dns : <Router IP>

Gute nacht (zefix etz gibts kloppe von da freundin weil ich am rechner war..)


Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
 

Düsi

BeitragDi, Mai 05, 2009 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmpf... Dein Code funktioniert, daher kann es wohl nicht an meinen Netzwerkeinstellungen liegen?!
Habe nun auch den gleichen Port benutzt, 7142... Dennoch kommt einfach nichts an...

Der komplette Code: https://www.blitzforum.de/upload/file.php?id=5454 (Client.bb und LoginServer.bb)

Dottakopf

BeitragDi, Mai 05, 2009 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
hm hab mir das mal angesehen, und ganz erhlich, das ist schon ein bisschen wuchtig viel zum gucken.
(auch kann ich den client nicht starten da mir eine dll fehlt). nachdem du schon viel gecoded hast, gehe ich mal davon aus, das das iwi schonmal funktioniert hat. Jetzt ist natürlich die frage, was hast du als letztes gemacht?? Suche hier den Fehler ! Geschickte Progger machen immer ein backup bevor sie etwas neues implementieren, hier stellt sich die Frage:"warst du geschickt?"

Ich vermute fast, das sich die TCP und UDP streams überschneiden.. und somit nichts am Server ankommt. Allerdings habe ich von TCP wirklich 0 Ahnung und kann dir daher leider nur wenig weiterhelfen. Sorry

Da wirst du wohl in den sauren apfel beißen müssen und das step by step druchchecken müssen, bzw step by step das program vereinfachen.
Das hab ich auch schon alles hinter mir... ich kenn das, in der woche durfte mir echt keienr dumm kommen Laughing

Achja.. dein client baut einen udp stream zu viel auf..

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group