Last active
December 16, 2015 16:40
-
-
Save pbalduino/5464822 to your computer and use it in GitHub Desktop.
Servidor TCP básico. Permite várias conexões simultâneas, mas os usuários não se conversam.
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
(ns server.core) | |
(import [java.net ServerSocket]) | |
(import [java.io DataInputStream | |
DataOutputStream]) | |
(defn- debug [message] | |
(println (str "[" (.getName (Thread/currentThread)) "] " message))) | |
(defn- start-server | |
([fun] | |
(println "Using default settings") | |
(start-server fun 9876)) | |
([fun port] | |
(println (str "Listening port " port)) | |
(do | |
(println "Starting connection") | |
(let [server (ServerSocket. port)] | |
(loop [socket (.accept server)] | |
(.start | |
(Thread. #(fun socket))) | |
(recur (.accept server))))))) | |
(defn- callback [socket] | |
(let [in (DataInputStream. (.getInputStream socket)) | |
out (DataOutputStream. (.getOutputStream socket))] | |
(debug "connected") | |
(.writeBytes out "\nHello stranger. Type exit to leave and press ENTER\n\n$ ") | |
(loop [user-input (.readLine in)] | |
(when-not (= "exit" user-input) | |
(do (debug user-input)) | |
(.writeBytes out (str "Read: " user-input "\n\n$ ")) | |
(recur (.readLine in)))) | |
(.writeBytes out "\nGoodbye stranger.\n\n") | |
(.close socket) | |
(debug "left"))) | |
(defn -main [] | |
(start-server callback)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment