Created
August 18, 2010 13:53
-
-
Save rwat/534794 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)) | |
(defn create-udp-server [& {:keys [local-ip local-port remote-ip remote-port]}] | |
(let [s (InetSocketAddress. (InetAddress/getByName local-ip) local-port) | |
r (InetSocketAddress. (InetAddress/getByName remote-ip) remote-port) | |
d (DatagramSocket. s) | |
udp-server (ref d)] | |
; Because the following operation is lexically isolated, from a | |
; concurrency point-of-view this side-effect is safe to perform. | |
(. @udp-server connect r) | |
; return the ref to the DatagramSocket | |
udp-server)) | |
(defn close-udp-server [udp-server] | |
(.close @udp-server) | |
(dosync udp-server nil)) | |
; WIP | |
(defn send-udp [udpserver] nil) | |
; WIP | |
(defn receive-udp [udpserver] nil) | |
;;; | |
(def listener (create-udp-server :local-ip "127.0.0.1", :local-port 29000 | |
:remote-ip "127.0.0.1", :remote-port 29001)) | |
(def sender (create-udp-server :local-ip "127.0.0.1", :local-port 29001 | |
:remote-ip "127.0.0.1", :remote-port 29000)) | |
(close-udp-server listener) | |
(close-udp-server sender) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment