미풍 IM 3.3 시리즈의 3 클라이언트와 서버 측 통신 모드
3844 단어 서버
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 편집
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.