미풍 IM 3.3 시리즈의 3 클라이언트와 서버 측 통신 모드

3844 단어 서버
통신 프레임워크는 networkcomms 2.3.1
TCP 통신을 사용할 때 클라이언트 측에서 서버에 메시지를 보냅니다. 예를 들어 A 메시지가 로그인 메시지입니다. B 메시지는 암호 메시지 업데이트 서버입니다. 어떻게 A와 B를 구분하고 해당하는 프로세서를 호출합니까?
NetworkComms 통신 프레임워크는 이러한 메커니즘을 채택한다. 클라이언트는 모든 메시지에'메시지 유형'을 나누고 서버 측은'메시지 유형'에 따라 해당하는 프로세서를 찾는다.
로그인 메시지를 예로 들다
클라이언트 코드:
                // 
                UserInfo userInfo = new UserInfo();
                userInfo.UserID = txtUserID.Texts.Trim();
                userInfo.Password = txtPassword.Texts.Trim();

                //
                UserLoginContract loginContract = newTcpConnection.SendReceiveObject<UserLoginContract>("UserLogin", "ResUserLogin", 8000, userInfo);


                // 
                if (loginContract.Message == "success")
                {
//
}

UserInfo는 정보를 전달하는 데 사용되는 서열화된 계약 클래스입니다.
"UserLogin"은 저희가 지정한 메시지 형식입니다. 서버에서 이 형식의 메시지를 받으면 해당하는 프로세서를 호출하여 처리하고 약속에 따라 "ResUserlogin"메시지 형식의 메시지를 되돌려줍니다.
보내는 메시지의 실제 유형은 UserInfo입니다.
반환된 메시지의 실제 유형은 userLoginContract입니다.
서버 측 코드:
(1) 해당 메시지 유형을 나타내는 프로세서
 
 NetworkComms.AppendGlobalIncomingPacketHandler<UserInfo>("UserLogin", IncomingLoginHandler);

(2) 구체적인 프로세서
 //    , 

private void IncomingLoginHandler(PacketHeader header, Connection connection, UserInfo userInfo) { try { UserLoginContract resContract; // resContract = DoRcUsers.Login(userInfo.UserID, userInfo.Password);

// connection.SendObject("ResUserLogin", resContract);
} catch (Exception ex) { LogTools.LogException(ex, "IncomingLoginHandler"); } }

www.networkcomms.cn 편집

좋은 웹페이지 즐겨찾기