더보기
Vertx를 사용하면 간단하게 논 블로킹(Non blocking) TCP 서버와 클라이언트를 구현 할 수 있습니다.
TCP 클라이언트를 생성하려면 Vertx 객체의 createNetClient()를 호출합니다.
NetClient client = vertx.createNetClient();
TCP 클라이언트 구성
TCP 클라이언트 환경 설정을 변경하려면 NetClientOptions를 사용하여 TCP 클라이언트를 생성합니다.
NetClientOptions options = new NetClientOptions().setConnectTimeout(10000);
NetClient client = vertx.createNetClient(options);
더보기
더보기
서버에 연결 할 수 없는 경우 자동으로 재연결을 시도하기 위해서 setReconnectInterval() 및 setReconnectAttempts()를 사용합니다.
이 설정은 초기 연결 과정에서만 적용됩니다.
NetClientOptions options = new NetClientOptions().
setReconnectAttempts(10).
setReconnectInterval(500);
NetClient client = vertx.createNetClient(options);
디폴트로는 재연결을 시도하지 않도록 되어있습니다.
TCP 서버에 연결
서버에 연결하려면 connect()를 사용합니다. 연결에는 첫 번째 인자:포트와 두 번째 인자:호스트가 필요합니다.
연결이 성사 또는 실패하면 등록된 핸들러를 통해 콜백 받습니다.
연결이 성사된 경우에 한해서 NetSocket 객체에 접근하여 소켓에 데이터를 읽거나 쓸 수 있습니다.
NetClientOptions options = new NetClientOptions().setConnectTimeout(10000);
NetClient client = vertx.createNetClient(options);
client.connect(4321, "localhost", res -> {
if (res.succeeded()) {
System.out.println("Connected!");
NetSocket socket = res.result();
} else {
System.out.println("Failed to connect: " + res.cause().getMessage());
}
});
TCP 클라이언트 소켓 처리
소켓으로부터 데이터를 읽어오려면 handler()를 등록합니다.
이 핸들러는 소켓으로부터 데이터를 읽어 올 수 있을 때 Buffer 객체와 함께 호출됩니다. 버퍼에는 전달된 데이터가 작성되어 있습니다.
socket.handler(buffer -> {
System.out.println("I received some bytes: " + buffer.length());
});
소켓에 데이터를 작성하려면 write()를 사용합니다.
Buffer buffer = Buffer.buffer().appendFloat(12.34f).appendInt(123);
socket.write(buffer);
// Write a string in UTF-8 encoding
socket.write("some data");
// Write a string using the specified encoding
socket.write("some data", "UTF-16");
소켓에 연결된 IP 주소를 확인하려면 localAddress() 또는 remoteAddress()를 사용합니다.
SocketAddress local = socket.localAddress();
SocketAddress remote = socket.remoteAddress();
소켓이 닫히면 closeHandler()를 등록하여 콜백 받습니다.
socket.closeHandler(v -> {
System.out.println("The socket has been closed");
});
정리 및 복습
- createNetClient()를 사용해 TCP 클라이언트를 생성합니다.
- TCP 클라이언트 생성에 필요한 구성은 NetClientOptions를 사용합니다.
- TCP 서버와의 연결이 성사되면 NetSocket 객체에 접근 할 수 있습니다.
- 소켓으로 서버가 보낸 데이터를 읽고, 서버로 데이터를 작성 할 수 있습니다.
'Java > Vert.x' 카테고리의 다른 글
버텍스 코어: TCP 서버 동시성 확장을 위한 배포 방법 (0) | 2022.03.14 |
---|---|
도커(Docker) 환경에서 버텍스 앱을 컨테이너로 실행(Containerize) (0) | 2022.03.13 |
버텍스 코어: TCP 서버 (0) | 2022.03.07 |
버텍스 코어: 버퍼(Buffers) (0) | 2022.03.07 |
메시지 코덱(Message codecs)을 구현하여 이벤트 버스에서 사용자 메시지 주고 받기 (0) | 2022.03.02 |