Skip to content

Instantly share code, notes, and snippets.

@rwat
Created August 12, 2010 19:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rwat/521574 to your computer and use it in GitHub Desktop.
Save rwat/521574 to your computer and use it in GitHub Desktop.
(import '(java.net InetAddress InetSocketAddress DatagramPacket DatagramSocket))
(def buf-len 1500)
; create a SocketAdress for the listener
(let [listener-port 29000
listener-ip "127.0.0.1"]
(def l-socket-address (InetSocketAddress. (InetAddress/getByName listener-ip) listener-port)))
; create a SocketAddress for the sender
(let [sender-port 29001
sender-ip "127.0.0.1"]
(def s-socket-address (InetSocketAddress. (InetAddress/getByName sender-ip) sender-port)))
; create a DatagramSocket for both listener and sender
(def l-sock (DatagramSocket. l-socket-address))
(def s-sock (DatagramSocket. s-socket-address))
; connect both listener and sender
(. l-sock connect s-socket-address)
(. s-sock connect l-socket-address)
(def packet (ref nil))
(def udp-listener (agent nil))
(def udp-sender (agent nil))
(def message "something")
(defn receive-packet []
(let [d (DatagramPacket. (byte-array buf-len) buf-len)
p (.receive l-sock d)]
(dosync (ref-set packet p))))
(defn send-packet [text]
(do (.send s-sock (DatagramPacket. (.getBytes text) (.length text)))))
(prn "entering udp setup")
(send-off udp-listener (receive-packet))
(prn "udp-listener listening")
(Thread/sleep 500)
(send-off udp-sender (send-packet message))
(prn "udp-sender sending")
(Thread/sleep 500)
(prn (.getData @packet))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment