낯선 사람 복호화 (3) 서버 전체 구조 간략

2877 단어 서버설계
제시: 공사가 좀 커서 개인적으로 잘 모르겠거나 논리성이 부족할 수 있습니다. 문제가 있으면 제때에 저에게 연락 주세요.전에 개요 디자인을 말씀드렸어요.이제 상세한 설계와 실현에 들어갑니다.이거 서버 얘기부터 할게요.서버는 클라이언트가 보낸 각종 요청을 처리하는 것이다. 예를 들어 등록, 비밀번호 찾기, 친구 추가 등이다.물론 이 요구들은 모두 자신이 실제 수요에 따라 설계했다고 생각하는 것이다.먼저 서버의 전체 구조를 통합된 프레임워크mina를 사용하기 때문에 비동기 처리와 같이 어떻게 높은 합병을 실현할 수 있는지 스스로 너무 많은 구체적인 세부 사항을 고려할 필요가 없다.전통적인 socket을 사용하면 당연히 실현할 수 있지만 높은 합병 요구는 달성하기 어렵다.이전에 이미 미나에 관한 한 편을 보냈는데, 바로 이 서버의 모형이다.간단한 문자열 메시지만 보내면 인코딩 디코더를 다시 쓸 필요가 없습니다. 그 자체에 TextLine CodeFactory가 있습니다.멀티미디어 메시지를 보내고 세션을 암호화하려면 디코더를 직접 작성해야 합니다.
그중에서 가장 중요한 것은com이다.imomo_server .이 안에서 맡은 것은 클라이언트와의 상호작용(각종 업무 논리 포함)이다.public class iMomoServer {public static void main(String[] args) {NioSocketAcceptor = new NioSocketAcceptor(), acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new iMoCodecFactory(), acceptor.setHandler(), acceptor.getConfig().setIdler leTime(IdleStatus.BOTH_IDLE, 60);//1분간 통화, 유휴 상태 try{ acceptor.bind(new InetSocketAddress(StaticValues.SERVER_PORT)); } catch (IOException e) { e.printStackTrace(); } } } 이것이 바로 포트 감청 서비스를 시작하는 종류입니다. 이렇게 많습니다.그리고 하나는 업무 논리를 처리하는 유형이다.public class MinaServerHandler extends IoHandlerAdapter{
@Override
public void exceptionCaught(IoSession session, Throwable cause)
        throws Exception {
    super.exceptionCaught(session, cause);
    cause.printStackTrace();
}

@Override
public void inputClosed(IoSession session) throws Exception {
    super.inputClosed(session);
    System.out.println("inputClosed");
}

@Override
public void messageReceived(IoSession session, Object message)
        throws Exception {
    SmsObject sms = (SmsObject) message;
    System.out.println(sms.toString());
}

@Override
public void messageSent(IoSession session, Object message) throws Exception {
    System.out.println("messageSent");
}

@Override
public void sessionClosed(IoSession session) throws Exception {
    System.out.println("sessionClosed"+session.getRemoteAddress()+":is Closed");
}

@Override
public void sessionCreated(IoSession session) throws Exception {
    System.out.println("sessionCreated");
}

@Override
public void sessionIdle(IoSession session, IdleStatus status)
        throws Exception {
    System.out.println("sessionIdle");
}

@Override
public void sessionOpened(IoSession session) throws Exception {
    System.out.println("open:::"+session.getAttribute(session.getId()));;
}

}
메시지Received 방법에서 클라이언트가 보낸 메시지를 받고 해당하는 처리를 하면 됩니다.
com.데이터베이스와 데이터베이스 작업과 관련된 패키지는 사용자가 개인 정보를 등록하고 수정하며 친구 목록을 얻고 오프라인 메시지를 보낼 때 사용됩니다.com.imomo_codecfactory는 위에서 언급한 인코더 패키지 com입니다.imomo_msg 이 패키지는 서버와 클라이언트가 전달하는 메시지 클래스와 자바 bean을 포함합니다.com.관리자 세션 관리, 사용자가 길게 연결된 세션session, 사용자 위치 기록, 그룹 기록 com 포함.보안 보안 처리 PBE 대칭 암호화 com.server_utils 일부 도구 클래스는 두 사용자의 거리 계산, 파일과 관련된 처리, 메일 발송, 정적 변수를 포함한다

좋은 웹페이지 즐겨찾기