java netty 예제

TCP/IP와 같은 스트림 기반 전송에서 수신된 데이터는 소켓 수신 버퍼에 저장됩니다. 안타깝게도 스트림 기반 전송의 버퍼는 패킷 큐가 아니라 바이트 큐입니다. 즉, 두 개의 메시지를 두 개의 독립 패킷으로 보낸 경우에도 운영 체제는 두 개의 메시지로 처리하지 않고 바이트의 무리로 취급합니다. 따라서 읽은 내용이 원격 피어가 작성한 내용이라는 보장은 없습니다. 예를 들어 운영 체제의 TCP/IP 스택에 세 개의 패킷이 수신되었다고 가정해 보겠습니다. 첫 번째 것부터 마지막 까지 완료하는 것이 좋습니다. 4.1, 4.0 및 3.10의 전체 예제 목록을 찾아볼 수도 있습니다. 이 섹션에서 구현할 프로토콜은 TIME 프로토콜입니다. 요청을 받지 않고 32비트 정수를 포함하는 메시지를 보내고 메시지가 전송되면 연결을 닫는다는 점에서 이전 예제와 다릅니다. 이 예제에서는 메시지를 생성및 보내고 완료 시 연결을 닫는 방법을 배웁니다.

이 예제는 Java 소스 코드 파일(EchoClient.java)이 alvinalexander.com “Java 소스 코드 웨어하우스” 프로젝트에 포함됩니다. 이 프로젝트의 목적은 “예제로 Java 를 배우십시오”TM을 돕기 위한 것입니다. 지금까지 검토한 모든 예제에서는 ByteBuf를 프로토콜 메시지의 기본 데이터 구조로 사용했습니다. 이 섹션에서는 ByteBuf 대신 POJO를 사용하도록 TIME 프로토콜 클라이언트 및 서버 예제를 개선합니다. 이제 첫 번째 서버를 작성되었으므로 실제로 작동하는지 테스트해야 합니다. 테스트하는 가장 쉬운 방법은 텔넷 명령을 사용하는 것입니다. 예를 들어 명령줄에 텔넷 localhost 8080을 입력하고 무언가를 입력할 수 있습니다. ChannelHandlers에서 POJO를 사용하는 이점은 분명합니다. ByteBuf에서 정보를 추출하는 코드를 처리기에서 분리하여 처리기를 보다 유지 관리 가능하고 재사용 이 수성하게 됩니다. TIME 클라이언트 및 서버 예제에서는 32비트 정수만 읽으며 ByteBuf를 직접 사용하는 것은 큰 문제가 아닙니다.

Comments are closed.