Skip to content

Instantly share code, notes, and snippets.

@jvns
Created October 10, 2013 00:16

Revisions

  1. jvns created this gist Oct 10, 2013.
    38 changes: 38 additions & 0 deletions echo-server.clj
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    (ns echo-server
    (:import (java.net InetAddress DatagramPacket DatagramSocket)))

    (def udp-server (ref nil))

    (def port 12345)

    (defn localhost [] (. InetAddress getLocalHost))

    (defn message [text]
    (new DatagramPacket (. text getBytes) (. text length) (localhost) port ))

    (defn send-message [text]
    (.send @udp-server (message text)))

    (defn create-udp-server []
    (DatagramSocket. port))

    (defn start-udp-server []
    (dosync (ref-set udp-server (create-udp-server))))

    (defn stop-udp-server []
    (.close @udp-server))

    (start-udp-server)

    (defn empty-message [n]
    (new DatagramPacket (byte-array n) n))



    (while true (do
    (def orig-packet (empty-message 1024))
    (.receive @udp-server orig-packet)
    (.send @udp-server orig-packet)
    (println ( new String (.getData orig-packet) "UTF-8"))
    )
    )