上一章节讲述了客户端与服务端如何进行消息的发送和接收,这篇我们通过登陆和注册来测试客户端与服务端信息的发送。
一、导入服务端与客户端定义好的协议
要与服务器进行通信的话,就要导入服务端与客户端定义好的协议,利用这个协议向服务器发送消息。首先从网上找到服务模块儿资源https://download.csdn.net/download/qq_40229737/12037672
放在Unity项目里的新建的Plugins文件夹下
二、登陆注册代码编写
三、客户端向服务端发送消息
四、客户端处理来自服务器的消息并显示
4.1 LoginHandler类内容如下:
using UnityEngine;
using System.Collections;
using GameProtocol;
using UnityEngine.SceneManagement;
/// <summary>
/// 专门处理登陆模块儿的消息
/// </summary>
public class LoginHandler : MonoBehaviour,IHandler {
/// <summary>
/// 消息接收处理
/// </summary>
/// <param name="model"></param>
public void MessageReceive(SocketModel model)
{
switch(model.command){//紧接着判断三层协议,命令功能,这个定义的是int类型的
case LoginProtocol.LOGIN_SRES://如果是登陆请求
Login(model.GetMessage<int>());//之所以用泛型是因为SocketModel传过来的类型不一定都是整形,在这儿我们知道它是整形,在其他地方可能就不是了
break;
case LoginProtocol.REG_SRES://如果是注册请求
Reg(model.GetMessage<int>());
break;
}
}
/// <summary>
/// 登录返回处理
/// </summary>
/// <param name="value"></param>
private void Login(int value)
{
switch (value)
{
case 0:
Application.LoadLevel(1);
break;
case -1:
WarningManager.errors.Add("账号不存在");
break;
case -2:
WarningManager.errors.Add("账号在线");
break;
case -3:
WarningManager.errors.Add("密码错误");
break;
case -4:
WarningManager.errors.Add("输入不合法");
break;
}
}
/// <summary>
/// 注册返回处理
/// </summary>
/// <param name="value"></param>
public void Reg(int value )
{
switch (value)
{
case 0:
WarningManager.errors.Add("注册成功");
break;
case 1:
WarningManager.errors.Add("注册失败,账号重复");
break;
}
}
}
其中Ihandler是一个接口
4.2 消息显示在UI提示面板上:
五、连接测试:
同样从网上找到服务模块儿资源https://download.csdn.net/download/qq_40229737/12037672里的服务器
启动服务
然后再启动客户端就可以进行测试了
登陆成功后会进入新的场景