web

    Netty - 동기/비동기, 블로킹/논블로킹#2

    Netty - 동기/비동기, 블로킹/논블로킹#2

    동기/비동기 멀티스레드 프로그래밍에서 동기화는 하나의 데이터에 대한 동시 접근을 하나의 스레드로 한정한다는 의미이다. 비동기 호출을 지원하는 디자인 패턴은 다양하다.(Future, Observer, Callback, Reactor) netty는 비동기 호출을 위한 API들을 프레임워크 레벨에서 제공해서 개발자가 스레드 동기화 이슈를 신경쓰는 대신 구현할 기능에 집중할 수 있다. 블로킹/논블로킹 블로킹은 요청한 작업이 성공하거나 에러가 발생하기 전까지 응답을 돌려주지 않는 것 논블로킹은 요청한 작업의 성공 여부와 상관없이 바로 결과를 돌려주는 것 블로킹 소켓 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream..

    Netty - Discard, Echo Service #1

    Netty - Discard, Echo Service #1

    개발환경 설정 JDK 설치 Apache Maven 설치 IDE 설치 netty dependency 추가 implementation 'io.netty:netty-all:4.1.68.Final' Discard 서버작성 데이터를 받기만하고 보내지 않는 Discard 서버를 만들어보자. 먼저 모든 netty 서버에는 다음이 필요하다. 클라이언트의 입력을 받아들일 포트를 지정하는 메인서버 클라이언트로부터 받아들인 입력 데이터를 처리하는 핸들러 BootStrapping: 서버를 구성하는 시작코드로 최소한 연결 요청을 수신할 포트에 서버를 바인딩한다. Discard Server 서버의 8888번 포트에 클라이언트 접속을 허용하고 클라이언트로부터 받은 데이터를 DiscardServerHandler 클래스가 처리하도록 ..