2010. 1. 28.

TCP 통신하기.. Thread버전..

원래애도 쓰레드로 움직이기는 한데..
여기서는 입출력부분을 쓰레드 영역으로 분리시켜보았다.

(defn echo-thread [socket]
  (let [reader (new java.io.BufferedReader (new java.io.InputStreamReader (. socket getInputStream)))
        out (. socket getOutputStream)
        pout (new java.io.PrintStream out)
        msg (. reader readLine)]
    (. socket shutdownInput)
    (. pout print msg)
    (. out flush)
    (. out close)
    (. socket close)))


(defn test-srv3 []
  (let [server (new java.net.ServerSocket 10013)]
    (loop [nextClient (. server accept)]
      (.start (new Thread (fn [] (echo-thread nextClient))))
      (recur (. server accept)))
    (. server close)))


그다지 깨끗한 코드는 아니지만.. 어쨌든 이제 소켓 생성하고 데이터를 내보내는 것은 무난히 이루어짐..


댓글 없음:

댓글 쓰기