|
// 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!")
|