
John Van Enk wrote:
Try something like this:
module Main where
import Network.Socket
main = withSocketsDo $ do -- Make a UDP socket s <- socket AF_INET Datagram defaultProtocol
-- We want to listen on all interfaces (0.0.0.0) bindAddr <- inet_addr "0.0.0.0"
-- Bind to 0.0.0.0:30000 http://0.0.0.0:30000 bindSocket s (SockAddrInet 30000 bindAddr)
-- Read a message of max length 1000 from some one (msg,len,from) <- recvFrom s 1000
putStrLn $ "Got the following message from " ++ (show from) putStrLn msg
Does this help? As Stephan said, you missed the bind step.
That works great, thanks. Yeah, I just assumed that the bind step was only necessary for connection-oriented protocols. (Interestingly enough, the matching "send" program doesn't bind at all, yet seems to work fine...)