Last active
August 29, 2015 14:02
-
-
Save aamedina/cd98581123fe716e2ece to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| (set! *warn-on-reflection* true) | |
| (defn server-response | |
| [packet] | |
| (Unpooled/copiedBuffer "Hello, world!" CharsetUtil/UTF_8)) | |
| (defn packet-content | |
| [^DatagramPacket packet] | |
| (str (.content packet))) | |
| (defn server-handler [] | |
| (proxy [SimpleChannelInboundHandler] [] | |
| (messageReceived [^ChannelHandlerContext ctx ^DatagramPacket packet] | |
| (let [content (packet-content packet) | |
| res (DatagramPacket. (server-response packet) (.sender packet))] | |
| (println content) | |
| (.write ctx res))) | |
| (channelReadComplete [^ChannelHandlerContext ctx] | |
| (.flush ctx)) | |
| (exceptionCaught [^ChannelHandlerContext ctx ^Throwable cause] | |
| (.printStackTrace cause)))) | |
| (defn run | |
| [port] | |
| (let [group (NioEventLoopGroup.)] | |
| (try | |
| (let [bootstrap (doto (Bootstrap.) | |
| (.group group) | |
| (.channel NioDatagramChannel) | |
| (.option ChannelOption/SO_BROADCAST true) | |
| (.handler (server-handler)))] | |
| (-> (.bind bootstrap (int port)) | |
| (.sync) | |
| (.channel) | |
| (.closeFuture) | |
| (.await))) | |
| (finally | |
| (.shutdownGracefully group))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment