Platforms to show: All Mac Windows Linux Cross-Platform

/Network/UDP Socket/UDPSocketMBS test


Required plugins for this example: MBS Network Plugin

Last modified Wed, 1st Oct 2024.

You find this example project in your MBS Xojo Plugin download as a Xojo project file within the examples folder: /Network/UDP Socket/UDPSocketMBS test

Download this example: UDPSocketMBS test.zip

Project "UDPSocketMBS test.xojo_binary_project"
Class MainWindow Inherits Window
Const kGroupAddress = "225.1.2.3"
Control Label2 Inherits Label
ControlInstance Label2 Inherits Label
End Control
Control MessageField Inherits TextField
ControlInstance MessageField Inherits TextField
End Control
Control SendButton Inherits PushButton
ControlInstance SendButton Inherits PushButton
EventHandler Sub Action() Dim Port As Integer = Val(PortField.Text) Call UdPSocket1.SendMessage(MessageField.Text, AddressField.Text, Port) AddMessage("Sending to " + AddressField.Text + ": " + MessageField.Text) End EventHandler
End Control
Control MessageList Inherits ListBox
ControlInstance MessageList Inherits ListBox
End Control
Control UDPSocket1 Inherits UDPSocketMBS
ControlInstance UDPSocket1 Inherits UDPSocketMBS
EventHandler Sub DataAvailable() Dim d As DatagramMBS = UDPSocket1.Read ShowMessage d End EventHandler
EventHandler Sub Error() dim e as integer = me.SocketError AddMessage("Error: " + str(e)) End EventHandler
EventHandler Sub SendComplete() AddMessage("Send complete.") End EventHandler
End Control
Control SendMulticastButton Inherits PushButton
ControlInstance SendMulticastButton Inherits PushButton
EventHandler Sub Action() AddMessage("Sending to all in group: " + MessageField.Text) Dim Port As Integer = Val(PortField.Text) Call UdPSocket1.SendMessage(MessageField.Text, kGroupAddress, Port) End EventHandler
End Control
Control AddressField Inherits TextField
ControlInstance AddressField Inherits TextField
EventHandler Sub Open() dim u as new UDPSocket me.Text = u.LocalAddress End EventHandler
End Control
Control StaticText1 Inherits Label
ControlInstance StaticText1 Inherits Label
End Control
Control BroadcastIPButton Inherits PushButton
ControlInstance BroadcastIPButton Inherits PushButton
EventHandler Sub Action() dim u as new UDPSocket Dim broadcastAddress As String = u.BroadcastAddress if broadcastAddress = "" then MsgBox "no broadcast address?" Return end if Dim Port As Integer = Val(PortField.Text) System.DebugLog broadcastAddress Dim n As Integer = UDPSocket1.SendMessage(MessageField.Text, broadcastAddress, Port) AddMessage("Sending "+str(n)+" bytes to all ("+broadcastAddress+"): " + MessageField.Text) End EventHandler
End Control
Control SendToSelfCheck Inherits CheckBox
ControlInstance SendToSelfCheck Inherits CheckBox
EventHandler Sub Action() UDPSocket1.MulticastLoop = Me.Value End EventHandler
End Control
Control Label1 Inherits Label
ControlInstance Label1 Inherits Label
End Control
Control GroupBox1 Inherits GroupBox
ControlInstance GroupBox1 Inherits GroupBox
End Control
Control BindPortButton Inherits PushButton
ControlInstance BindPortButton Inherits PushButton
EventHandler Sub Action() UDPSocket1.ReuseAddress = true if UDPSocket1.Lasterror <> 0 then MsgBox "Failed to ask for ReuseAddress." end if UDPSocket1.ReusePort = true if UDPSocket1.Lasterror <> 0 then MsgBox "Failed to ask for ReusePort." end if dim Port as integer = Val(PortField.Text) UDPSocket1.Bind(port) // bind to all addresses if UDPSocket1.Lasterror = 0 then AddMessage("Bound to port: " + PortField.Text+ " for all addresses") else UDPSocket1.Bind(port, LocalAddress) // bind only to local address if UDPSocket1.Lasterror = 0 then AddMessage("Bound to port: " + PortField.Text+ " for IP " + LocalAddress) else AddMessage("Failed to bind to IP "+LocalAddress+" to port: " + PortField.Text+" with error: "+str(UDPSocket1.Lasterror)) end if end if End EventHandler
End Control
Control StaticText2 Inherits Label
ControlInstance StaticText2 Inherits Label
End Control
Control PortField Inherits TextField
ControlInstance PortField Inherits TextField
EventHandler Sub Open() Me.Text = "8345" End EventHandler
End Control
Control StaticText3 Inherits Label
ControlInstance StaticText3 Inherits Label
End Control
Control TTLField Inherits TextField
ControlInstance TTLField Inherits TextField
EventHandler Sub Open() Me.Text = Str(UDPSocket1.TimeToLive) End EventHandler
End Control
Control SetTTLButton Inherits PushButton
ControlInstance SetTTLButton Inherits PushButton
EventHandler Sub Action() UDPSocket1.TimeToLive = Val(TTLField.Text) AddMessage("Set TTL: " + TTLField.Text) End EventHandler
End Control
Control GroupBox2 Inherits GroupBox
ControlInstance GroupBox2 Inherits GroupBox
End Control
Control JoinButton Inherits PushButton
ControlInstance JoinButton Inherits PushButton
EventHandler Sub Action() UDPSocket1.AddMembership(kGroupAddress) If UDPSocket1.Lasterror = 0 Then AddMessage("Joined the UDP Group: " + kGroupAddress) Else AddMessage("Failed to join the UDP Group: " + kGroupAddress) End End EventHandler
End Control
Control LeaveButton Inherits PushButton
ControlInstance LeaveButton Inherits PushButton
EventHandler Sub Action() UDPSocket1.DropMembership(kGroupAddress) AddMessage("Left the UDP Group: " + kGroupAddress) End EventHandler
End Control
Control PushButton1 Inherits PushButton
ControlInstance PushButton1 Inherits PushButton
EventHandler Sub Action() AddMessage "Availablebytes: "+str(UDPSocket1.AvailableBytes) End EventHandler
End Control
Control ReadButton Inherits PushButton
ControlInstance ReadButton Inherits PushButton
EventHandler Sub Action() Dim d As DatagramMBS = UDPSocket1.Read ShowMessage d End EventHandler
End Control
EventHandler Sub Open() 'UDPSocket1.ReuseAddress = true 'if UDPSocket1.Lasterror <> 0 then 'MsgBox "Failed to ask for broadcast." 'end if UDPSocket1.Broadcast = true if UDPSocket1.Lasterror <> 0 then MsgBox "Failed to ask for broadcast." end if UDPSocket1.MulticastLoop = true if UDPSocket1.Lasterror <> 0 then MsgBox "Failed to ask for multicast loop." end if MessageField.SetFocus dim u as new UDPSocket localAddress = u.LocalAddress Self.Title = "UDP Example MBS (" + LocalAddress + ")" End EventHandler
Private Sub AddMessage(text As String) MessageList.InsertRow(0, text) End Sub
Private Sub ShowMessage(d as DatagramMBS) if d<>Nil then dim s as string = d.Data // fix encoding if unknown if s.Encoding = nil then if Encodings.UTF8.IsValidData(s) then s = DefineEncoding(s, encodings.UTF8) else // fall back to something s = DefineEncoding(s, encodings.ISOLatin1) end if end if AddMessage("Received message: " + s) else AddMessage("Received no message") end if End Sub
Property LocalAddress As string
End Class
MenuBar MainMenuBar
MenuItem UntitledMenu3 = ""
MenuItem UntitledMenu2 = "File"
MenuItem FileQuit = "Quit"
MenuItem UntitledMenu7 = ""
MenuItem UntitledMenu0 = "Edit"
MenuItem EditUndo = "Undo"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "Cut"
MenuItem EditCopy = "Copy"
MenuItem EditPaste = "Paste"
MenuItem EditClear = "Clear"
MenuItem UntitledMenu6 = ""
MenuItem UntitledMenu5 = ""
MenuItem UntitledMenu4 = ""
End MenuBar
Class App Inherits Application
EventHandler Function UnhandledException(error As RuntimeException) As Boolean MsgBox Introspection.GetType(error).name+EndOfLine+EndOfLine+error.Message+EndOfLine+Join(error.Stack, EndOfLine) Return true End EventHandler
End Class
Sign
End Sign
End Project

Download this example: UDPSocketMBS test.zip

The items on this page are in the following plugins: MBS Network Plugin.


The biggest plugin in space...