Created
August 12, 2010 19:36
-
-
Save rwat/521574 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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