아파 치 미 나 배우 기
IoAcceptor 는 네트워크 응용 프로그램의 서버 쪽 에 해당 합 니 다.
IoConnector 는 클 라 이언 트 에 해당 합 니 다.
IoSession 현재 클 라 이언 트 가 서버 쪽으로 연결 되 는 인 스 턴 스
IoHandler 비 즈 니스 처리 논리
IoFilter 필 터 는 통신 실 인터페이스 와 업무 층 인 터 페 이 스 를 연결 하 는 데 사용 된다.
IoService 는 응용 프로그램의 입구 로 우리 가 앞에서 말 한 IoAcceptor 에 해당 하고 후 자 는 전자의 확장 인터페이스 이다.IoService 는 여러 개의 IoFilter 를 추가 할 수 있 습 니 다. 이 IoFilter 는 책임 체인 모델 에 부합 되 고 IoProcessor 스 레 드 에서 호출 됩 니 다.IoAcceptor 는 또한 특정한 통신 포트 를 연결 하고 연결 을 취소 하 는 인 터 페 이 스 를 제공 합 니 다.Mina 는 Socket 통신 방식 을 제공 합 니 다. 데 이 터 를 바탕 으로 메시지 통신 을 하 는 DatagramAcceptor, 파이프 통신 을 바탕 으로 하 는 VmPipeAcceptor, 직렬 통신 접속 방식 과 사용자 가 스스로 IoService 인 터 페 이 스 를 실현 하 는 사용자 정의 통신 방식 을 제공 합 니 다.위의 그림 에서 가장 오른쪽 에 있 는 IoHandler 는 업무 처리 모듈 이다.업무 처리 류 에서 우 리 는 실제 통신 세부 사항 에 관심 을 가지 지 않 고 클 라 이언 트 가 전송 한 정보 만 처리 하면 된다.Handler 클래스 를 작성 하 는 것 은 미 나 를 이용 하여 네트워크 애플 리 케 이 션 을 개발 하 는 중심 입 니 다. 다른 통신 분야 의 세부 적 인 문 제 는 모두 미 나 가 처리 해 줍 니 다.Handler 류 를 간소화 하기 위해 Mina 는 IoHandler Adapter 류 를 제 공 했 는데 이 종 류 는 IoHandler 인 터 페 이 스 를 실 현 했 을 뿐 어떠한 처리 도 하지 않 았 다.
IoHandler 인터페이스 에는 다음 과 같은 방법 이 있 습 니 다.
void exception Caught (IoSession session, Throwable cause) / / 인터페이스 에 있 는 다른 방법 이 이상 하 게 포착 되 지 않 았 을 때 이 방법 을 터치 합 니 다.
void message Received (IoSession session, Object message) / / 클 라 이언 트 의 요청 정 보 를 받 은 후 이 방법 을 실행 합 니 다.
void message sent (IoSession session, Object message) / / 정보 가 클 라 이언 트 에 전송 되 었 을 때 이 방법 을 실행 합 니 다.
void sessionClosed (IoSession session) / 연결 이 닫 혔 을 때 터치 합 니 다. 예 를 들 어 클 라 이언 트 프로그램 이 예상 치 못 하 게 종료 되 는 등 입 니 다.
void session Created (IoSession session) / / 새 클 라 이언 트 가 연결 되면 이 방법 을 실행 합 니 다.
void sessionIdle (IoSession session, IdleStatus status) / / 연결 이 비어 있 을 때 이 방법 을 실행 합 니 다.
void session Opened (IoSession session) / / 연결 후 열 렸 을 때 이 방법 을 터치 합 니 다. 일반적으로 이 방법 은 session Created 와 함께 상기 그림 의 IoFilter 를 터치 합 니 다. IoService 와 IoHandler 간 의 다리 입 니 다. 이 방법 으로 원 하 는 모든 필터 방법 을 실현 할 수 있 습 니 다.
IoHandler 중 하 나 는 message Receive 입 니 다. 이 방법의 두 번 째 매개 변 수 는 Object 유형 입 니 다. 이 구체 적 인 유형 은 IoFilter 에 의 해 결 정 됩 니 다.
예 를 들 어 우리 가 new ProtocolCodecFilter (new TextLine CodecFactory () 를 추가 하 는 것 은 클 라 이언 트 가 입력 한 정 보 를 한 줄 의 텍스트 로 변환 하여 IoHandler 에 전달 하 는 것 이다. 따라서 IoHandler 에서 msg 대상 을 직접 String 대상 으로 강제 변환 할 수 있다.만약 우리 가 어떤 필 터 를 제공 하지 않 는 다 면 두 번 째 매개 변수의 유형 은 byte 버퍼 입 니 다. 대응 하 는 종 류 는 org. apache. mina. comon. byte Buffer 입 니 다.Mina 자체 에는 LoggingFilter (로그 기록), BlachList Filter (블랙리스트 필터), CompressionFilter (압축), SSLFilter (SSL 암호 화) 등 자주 사용 되 는 필터 가 있 습 니 다.
미 나 는 네트워크 서버 애플 리 케 이 션 개발 외 에 도 다양한 네트워크 서비스 프로그램 을 IoConnector 로 연결 할 수 있다.
나 는 구분자
Mina 는 비 차단 통신 모드 를 사용 합 니 다.
a) NIO 디자인 뒤의 초석: 반응 기 모델: 이벤트 다 중 분리 와 분파 에 사용 되 는 시스템 구조 모델.반응 기 모드 의 핵심 기능 은 다음 과 같다.
이벤트 다 중 분할 사용
사건 을 각자 해당 하 는 사건 처리 절차 에 분파 하 다.
b) NIO 의 비 차단 I / O 체 제 는 선택 기와 채널 을 중심 으로 구축 된다.
선택 기 클래스 (Selector) 는 Channel 의 다 중 복합 기 입 니 다.Selector 클래스 는 클 라 이언 트 에 전송 되 어 다 중 분 리 를 요청 하고 이 를 각자 의 요청 처리 프로그램 에 할당 합 니 다.
채널 클래스 (Channel) 는 서버 와 클 라 이언 트 간 의 통신 체 제 를 나타 내 고 하나의 채널 은 요청 / 사건 을 처리 합 니 다.
NIO 는 사건 의 IO 구 조 를 바탕 으로 하 는 것 이다. 가장 기본 적 인 사상 은 사건 이 있 으 면 내 가 너 에 게 이 사건 과 관련 된 일 을 다시 하 라 고 알려 줄 것 이다.또한 NIO 의 메 인 스 레 드 는 하나 뿐 이 고 전통 적 인 모델 과 달리 클 라 이언 트 의 요청 에 대응 하기 위해 여러 스 레 드 가 필요 하 며 JVM 의 작업량 도 줄 였 다.
c) 채널 이 selector 에 등 록 된 후에 전형 적 인 호출 방법 은 다음 과 같다.
while(condition){
int n = selector.select(TIMEOUT);
if(n==0) continue;
for(Iterator it = selector.selectedKeys().iterator();it.hasNext();){
if(key.isAcceptable()) doAcceptable(key);
if(key.isConnectable())doConnectable(key);
if(key.isValid() && key.isReadable()) doReadable(key);
if(key.isValid() && key.isWritable()) doWritable(key);
it.remove();
}
}
NIO 는 하나의 주요 클래스 인 Selector 가 있 습 니 다. 이 클래스 는 관찰자 와 유사 합 니 다. 우리 가 알 아야 할 socketchannel 을 Selector 에 게 알려 주면 우 리 는 다른 일 을 할 것 입 니 다. 사건 이 발생 하면 SelectKey 에 게 알려 줍 니 다. 우 리 는 이 key 를 읽 으 면 우리 가 방금 등록 한 socketchannel 을 얻 은 다음 에 우 리 는 이 채널 에서 데 이 터 를 읽 을 것 입 니 다.이어서 우 리 는 이 데이터 들 을 처리 할 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 파일 압축 및 압축 풀기파일 의 간단 한 압축 과 압축 해 제 를 실현 하 였 다.주요 테스트 용 에는 급 하 게 쓸 수 있 는 부분 이 있 으 니 불편 한 점 이 있 으 면 아낌없이 가르쳐 주 십시오. 1. 중국어 문 제 를 해 결 했 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.