지난번에는 NetServer를 이용해서 EchoServer를 만들고 telnet으로 접속해서 메아리를 확인했었다. 이번에는 NetClient를 이용해서 자바로 EchoClient를 만들었다.

[gist id=1730614]

서버 코드도 다시 볼까?

[gist id=1704781]

서버를 다시 띄워보자. 서버를 띄우려면 빌드를 하고, target을 classes가 들어있는 빌드 루트 디렉토리라고 가정하고..

target> vertx run -main echo.EchoSever -cp classes

이렇게 실행하면 기본적으로 코어 갯수만큼 인스턴스를 생성해준다. 맥북 에어에서 4개의 인스턴스가 생겼다.

다음은 클라이언트를 실행할 차례다..

target> vertx run -main echo.EchoClient -cp classes -instances 1

이번에는 -instances 옵셥으로 인스턴스를 한개만 띄우도록 설정했다 안그러면 기본으로 클라이언트가 4개 떠버리고... 그랬다가는 아래와 같은 불상사가 발생한다.

물론, 이번에도 telnet으로 접속할 수 있다.

target> telnet localhost 8080

코드는 NetServer와 매우 유사하다.

먼저, NetClient 객체를 만들고 connect() 메서드 호출하면서, handle(NetSocket)만 구현하면 되는 Handler<NetSocket> 객체를 만들어서 넘긴다. 이런 객체를 콜백 객체나 함수 객체라고 불러도 되지 않을까 싶다.

handle() 메서드 안에서 본격적으로 연결된 뒤에 할 일을 하면 되는데, 일단 클라이언트가 서버로부터 메시지를 받았을 때 무슨일을 할지 dataHandler()라는 메서드를 호출하면서, 또 다시 함수 객체로 Handler 객체를 넘긴다.

그담엔 메시지를 하나 보내본다.

끝.