来源:自学PHP网 时间:2015-04-14 12:58 作者: 阅读:次
[导读] 通信框架为networkcomms 2 3 1使用TCP通信时,客户端端发送消息给服务器,比如 A消息是登陆消息 B消息是更新密码消息 服务器端如何区分A与B,并调用相应的处理器呢?NetworkComms通信框架采...
通信框架为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"); } } |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com