Created
May 23, 2016 18:06
-
-
Save pbalduino/1ed5d477cd290836804b38f03163d101 to your computer and use it in GitHub Desktop.
A small test with UDP
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
(ns udptest.core | |
(:import [java.net DatagramSocket | |
DatagramPacket | |
InetAddress] | |
[java.io BufferedReader | |
InputStreamReader])) | |
(set! *warn-on-reflection* true) | |
(defn- client [] | |
(println "[CLIENT] Starting") | |
(let [inFromUser (BufferedReader. (InputStreamReader. System/in)) | |
clientSocket (DatagramSocket.) | |
IPAddress (InetAddress/getByName "localhost") | |
sendData (byte-array 1024) | |
receiveData (byte-array 1024) | |
sentence (.readLine inFromUser) | |
sendData (.getBytes sentence) | |
sendPacket (DatagramPacket. sendData (alength sendData) IPAddress 9876) | |
_ (.send clientSocket sendPacket) | |
receivePacket (DatagramPacket. receiveData (alength receiveData)) | |
_ (.receive clientSocket receivePacket) | |
modifiedSentence (String. (.getData receivePacket)) | |
_ (println "FROM SERVER:" modifiedSentence)] | |
(.close clientSocket))) | |
(defn- server [] | |
(println "[SERVER] Starting") | |
(let [serverSocket (DatagramSocket. 9876) | |
receiveData (byte-array 1024) | |
sendData (byte-array 1024)] | |
(loop [receiveData receiveData | |
sendData sendData] | |
(let [receivePacket (DatagramPacket. receiveData (alength receiveData)) | |
_ (.receive serverSocket receivePacket) | |
sentence (String. (.getData receivePacket)) | |
_ (println "[SERVER] RECEIVED:" sentence) | |
IPAddress (.getAddress receivePacket) | |
port (.getPort receivePacket) | |
capitalizedSentence (.toUpperCase sentence) | |
sendData (bytes (.getBytes capitalizedSentence)) | |
sendPacket (DatagramPacket. sendData (alength sendData) IPAddress port)] | |
(.send serverSocket sendPacket) | |
(recur (bytes receiveData) (bytes sendData)))))) | |
(defn -main[& args] | |
(.start (Thread. ^Runnable server)) | |
(.start (Thread. ^Runnable client))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment