// retoor <retoor@molodetz.nl>
import "udp" for UdpSocket, UdpMessage
import "timer" for Timer
import "scheduler" for Scheduler
System.print("=== UDP Module Demo ===\n")
System.print("--- Basic UDP Echo Server ---")
var server = UdpSocket.new()
server.bind("127.0.0.1", 8888)
System.print("Server listening on %(server.localAddress):%(server.localPort)")
var client = UdpSocket.new()
client.bind("127.0.0.1", 0)
System.print("Client bound to %(client.localAddress):%(client.localPort)")
var messageCount = 0
var maxMessages = 3
Scheduler.add {
while (messageCount < maxMessages) {
var msg = server.receive()
if (msg == null) break
System.print("Server received: '%(msg[0])' from %(msg[1]):%(msg[2])")
server.send("Echo: %(msg[0])", msg[1], msg[2])
messageCount = messageCount + 1
}
server.close()
System.print("Server closed")
}
Scheduler.add {
var messages = ["Hello", "UDP", "World"]
for (m in messages) {
client.send(m, "127.0.0.1", 8888)
System.print("Client sent: '%(m)'")
var response = client.receive()
if (response != null) {
System.print("Client received: '%(response[0])'")
}
}
client.close()
System.print("Client closed")
}
Timer.sleep(500)
System.print("\n--- Broadcast Configuration ---")
var bcast = UdpSocket.new()
bcast.bind("0.0.0.0", 0)
bcast.setBroadcast(true)
System.print("Broadcast enabled on port %(bcast.localPort)")
bcast.close()
System.print("\nDemo complete!")