'java.nio'에 해당되는 글 2건

  1. Scalable IO in Java 2010/03/09
  2. 소켓 연결 확인하기.. 2010/03/03

Scalable IO in Java

from data 2010/03/09 17:53
Doug Lea 교수님께서 강의를 위해서 만들어놓은 자료입니다. 어디에서 다운로드를 받았는지 기억이 안나서 업로드 합니다.

PDF 자료를 보시면,  POSA2의 Reactor 패턴을 이용해서 이벤트를 디스패칭하는 내용을 기본으로, 약 3가지의 모델을 제시하고 있고, 그 중에서 Using Multiple Reactors 슬라이드 편이 가장 성능이 좋을거 같습니다.



위와 같은 모습의 서버 프레임웍을 조만간 공개할 예정입니다.
혹시, nio 기반의 소켓서버를 개발하시는 분들에게 도움이 되었으면 하네요.. ^^

소켓 연결 확인하기..

from java 2010/03/03 12:19
소켓을 기반으로 풀링을 하는 라이브러리를 개발할 시에 보통 소켓 클래스의 isconnected 라는 상태변수를 통해서 소켓의 연결상태를 확인할 수 있으나, 정확한 정보는 아니죠.. isconnected라는 변수는, 마지막 네트웍 이벤트를 처리한 소켓의 연결 상태이기 때문이죠.. 그래서 확실하게 풀을 관리하기 위해서는 네트웍 이벤트를 발생시켜 보는것이 Java에서는 해결책이라고 봐야 될듯 합니다. 
아래코드는 SocketChannel이 non-block인 상태를 기준으로, read 메쏘드를 호출했을 경우, 리턴값을 보고 상태를 확인하는 코드입니다.

int  readbytes = socketChannel.read(buf);

// 연결이 되어 있음..
if(readbytes == 0)
// 끊어졌네요.
if (readbytes == -1)
// 리시브된 데이타가 있네요..
if(readbytes >0)

소켓 풀링을 관리하는 매니저 클래스가 풀에 들어있는 소켓의 read 이벤트를 주기적으로 호출해보면, socket의 연결상태를 잘 유지할 수 있을 것입니다. ^^