UDP --> Host schickt keine Daten

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

DerSpuck

Betreff: UDP --> Host schickt keine Daten

BeitragSa, Jun 30, 2007 12:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Wollte mich mal ein wenig mit UDP befassen und leider bekommt mein Client keine Daten zurück vom Host. Habe 2 Computer hier stehen und die sehen sich auch im Netzwerk ohne Probleme.

Hier der Code ohne Global befehle.

Code: [AUSKLAPPEN]

Hostmodus = Input("1. für Host | 2. für Client")

If Hostmodus = 1 Then
sendeport    = 8000
empfangsport = 8001
EndIf
If Hostmodus = 2
IP = IntegerIP("192.168.0.188")
sendeport    = 8001
empfangsport = 8000
EndIf

senden = CreateUDPStream(sendeport)
empfangen = CreateUDPStream(empfangsport)


Repeat
cls

If RecvUDPMsg(Empfangen) Then
IP = RecvUDPMsg(Empfangen)

Nachricht$ = "Nachricht eingetroffen"
EndIf

WriteByte Senden, das
SendUDPMsg Senden, IP, Sendeport


Text 20,20, Nachricht$
Text 50,50, Ip

Flip
Until keydown(1)

Function IntegerIP(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


Jetzt bekommt der Host eine Nachricht und springt auf "Nachricht erhalten"
IP ist jede 3 Sekunden kurz für eine Sekunde mit ner Zahl da ansonsten aber auf 0
Beim Client steht nix und hat dafür IP dauerhaft da stehen. Kann mir da vielleicht jemand weiter helfen ? :/

ZaP

BeitragSa, Jun 30, 2007 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Moment mal, "Writebyte senden, das" geht nicht.
Es ist schon richtig, dass man ein Byte voran sendet, aber damit ist eine Zahl gemeint.

Aber auch sende und empfangsport sollten Konstant bleiben, in deinem Script sieht es so aus, als ob Sender und Empfänger den selben port benutzen.

Code: [AUSKLAPPEN]

const port_client = 8001
const port_host = 8000

if host = 1
stream = createudpstream(port_host)
else
stream = createudpstream(port_client)
endif



repeat

if host = 1
 writebyte(stream,1) ;Byte "1" wird in Stream geschrieben
 writeline(stream, "Testnachricht") ;anschließend ein String
 sendudpmsg(stream, integerip(ziel) ,client_port)
else
 if recvudpmsg(stream)
  ipfrom = udpmsgip(stream)
  msg_info = readbyte(stream) ;byte aus stream lesen, um zu wissen, was der Absender will
  select msg_info
    case 1 ;nachricht
      the_nachricht$ = readline(stream) ;string aus stream lesen
      print(the_nachricht$)
  end select
 endif
endif



until keyhit(1)
Starfare: Worklog, Website (download)
  • Zuletzt bearbeitet von ZaP am Sa, Jun 30, 2007 12:27, insgesamt einmal bearbeitet
 

DerSpuck

BeitragSa, Jun 30, 2007 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
hab auch schon voher mal Writeline ausprobiert ... und mit dem Programm habe ich ja gleichzeitig Host und Client.. Kann man am Anfang auswählen was man sein möchte. Wenn man Host ist, schickt man auf 8000 und empfängt auf 8001 . Als Client andersrum. : )

ZaP

BeitragSa, Jun 30, 2007 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab meinen Beitrag nomma Editiert mit einem Pseudocode o0
Starfare: Worklog, Website (download)
 

DerSpuck

BeitragSa, Jun 30, 2007 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah
Ok danke für deine Mühe.. Hab aber nur den einen Befehl udpmsgip gesucht... Denke damit sollte mein Code funktionieren. Danke ; )

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group