Yep, see the following example:
import net
let listener = newSocket(sockType=SOCK_DGRAM, protocol=IPPROTO_UDP)
# listen on port 9999
listener.bindAddr(Port(9999))
var
data = newString(1024) # receive buffer of 1024 bytes
senderAddress: string
senderPort: Port
numReceived: int
while true:
numReceived = listener.recvFrom(data, 1024, senderAddress, senderPort)
echo "Received ", numReceived, " bytes from address ", senderAddress,
":", senderPort, " - ", data[0..numReceived]
This will listen on port 9999 and continuously receive UDP packets. Received
packets are writtent to the data buffer (max size of 1024 bytes here), the
actual number of bytes in the packet are in numReceived and the sender address
and port are in senderAddress/senderPort respectively.