The roDataGramSocket component enables Brightscript apps to send and receive UDP packets. The interface is modeled on and works much like standard Berkeley sockets.

Supported Interfaces

Note: some legacy firmware versions may implement ifSocketCastOption as ifSocketCast.

Supported Events

Description

This object is created without any arguments:

  • CreateObject("roDataGramSocket")

Example
 ' UDP 2-way peer-to-peer asynchronous comm on port 54321
 ' periodically sends out a message to a specific address and port
 ' prints any message it receives 
 Function UDPPeer()
     msgPort = createobject("roMessagePort") 
     udp = createobject("roDatagramSocket")
     udp.setMessagePort(msgPort) 'notifications for udp come to msgPort
     addr = createobject("roSocketAddress")
     addr.setPort(54321)
     udp.setAddress(addr) ' bind to all host addresses on port 54321
     addr.SetHostName("10.1.1.1")
     udp.setSendToAddress(addr) ' peer IP and port
     udp.notifyReadable(true) 
     timeout = 1 * 10 * 1000 ' ten seconds in milliseconds
     deviceName = Createobject("roDeviceInfo").GetFriendlyName()
     message = "Datagram from " + deviceName
     udp.sendStr(message)
     continue = udp.eOK() 
     While continue
         event = wait(timeout, msgPort)
         If type(event)="roSocketEvent"
             If event.getSocketID()=udp.getID()
                 If udp.isReadable()
                     message = udp.receiveStr(512) ' max 512 characters
                     print "Received message: '"; message; "'"
                 End If
             End If
         Else If event=invalid
             print "Timeout"
             udp.sendStr(message) ' periodic send
         End If
     End While 
     udp.close() ' would happen automatically as udp goes out of scope
 End Function