UDPSocket sendet nicht

(Xojo 2023, Mac, Big Sur), Macbook, einziges aktives Interface ist WLAN

Ich möchte als Test eine einfache Message per UDP an eine konkrete Zieladresse/Port senden. Dazu habe ich ein UDPSocket-Symbol in mein Projektfenster gezogen und dieses mysock genannt. Dann dieser Code:

var dg as new datagram
dg.data = “Hallo!”
dg.port = 8266
dg.Address = “192.1678.10.55”
mysock.NetworkInterface = System.NetworkInterface(0) //andere Indices stürzen ab
mysock.port = 8266 // wahlweise weggelassen
me.connect // wahlweise weggelassen
me.write(dg)

Gleichzeitig habe ich Wireshark auf dem Macbook offen und den Empfangsfilter auf UDP gesetzt. Ergebnis: NIX. Wo könnte das Problem sein? Danke für Tips.

mysock und me sollte das die gleiche Komponente sein?


var dg as new datagram
dg.data = "Hallo!"
dg.port = 8266
dg.Address = "192.1678.10.55"
UDPSocket1.NetworkInterface = System.NetworkInterface(0) //andere Indices stürzen ab
UDPSocket1.port = 8266 // wahlweise weggelassen
UDPSocket1.connect // wahlweise weggelassen
UDPSocket1.write(dg)

Schaue dir auch alle Events und deren Ausgaben an

Bei Windows musste ich einmal die Firewall erlauben.

Danke für den Tip mit den Fehlermeldungen - der Wald und die Bäume, sorry. Die Fehlermeldung lautet “address is in use”. Ich habe in einem Projekt zwei UDP-Sockets und wollte so das Zusenden von Messages testen. Logischerweise haben beide die gleiche lokale IP und sind an den gleichen physischen Netzwerkadapter gebunden … ist das die Ursache oder wie kann ich das lösen?

Tja, beim UDPSocketMBS gibt es ein ReusePort und ReuseAddress property um mehr als ein Socket auf dem Port horchen zu haben.

Das kann man auch mit OptionReuseAddressMBS und OptionReusePortMBS per MBS Xojo Plugins für das UDPSocket einstellen.

hast du da ggfs. den gleichen Port benutzt?

var dg as new datagram
dg.data = "Hallo!"
dg.port = 8266
dg.Address = "192.1678.10.55"
//UDPSocket1.NetworkInterface = System.NetworkInterface(0) //alle interface
UDPSocket1.port = 0 // automatic port
UDPSocket1.connect // 
UDPSocket1.write(dg)

Fur senden das ist ok.

Danke!

1 Like