客户端连接服务器
当客户端连接到服务器时,必须有ProudNet的NetClient对象.我们将该对象添加到客户端的NetManager.cs. 客户端使用ProudNet客户端库的情况,请参考Unity plugin 说明 public class NetManager : MonoBehaviour { NetClient m_netClient; ... |
NetManager开始时创建NetClient实例. void Start() { m_netClient = new NetClient(); ... |
NetClient进行事件或者信息的处理,此函数被称作NetClient.FrameMove.对此进行短时间的反复调用. void Update() { if (m_netClient != null) { m_netClient.FrameMove(); ... |
程序结束时,中断NetClient. void OnApplicationQuit() { // #SHOW08 Stop m_netClient.Disconnect(); } |
现在,点击Login键修改代码以连接到服务器.OnGUI修改如下. 调用NetClient.Connect尝试连接到服务器. 该函数需要服务器的endpoint (地址和端口)和协议版本. void OnGUI() { if (m_state == MyState.Disconnected || m_state == MyState.Connecting) { if (m_state == MyState.Disconnected) { if (GUI.Button(new Rect(10, 130, 100, 20), "Login!")) { var connectParam = new NetConnectionParam(); connectParam.protocolVersion = new Guid(); connectParam.protocolVersion.Set(Version); connectParam.serverIP = "localhost"; connectParam.serverPort = ServerPort; m_netClient.Connect(connectParam); m_state = MyState.Connecting; ... |
协议版本用来防止连接,如果客户端和服务器是不同的版本。当客户端程序的网络协议发生改变时,建议更改该值.网络协议版本将取决于收发信息的各种格式. public static System.Guid Version = new System.Guid("{0x107b3b66,0xb7de,0x4091,{0xa5,0xba,0x72,0xca,0x1a,0xf5,0x1a,0xbc}}"); public static ushort ServerPort = 35475; |
客户端试图连接到服务器,并获取结果.为得到结果进行NetClient.JoinServerCompleteHandler事件处理,为此事件添加代码. 在这里,在代码服务器地址被指定为localhost,同时输入您的服务器地址. 在命令中输入ipconfig或者ifconfig来显示您的服务器地址. m_netClient.JoinServerCompleteHandler = (ErrorInfo info, ByteArray replyFromServer) => { if (info.errorType == ErrorType.ErrorType_Ok) { m_state = MyState.Connected; } else { Debug.Log(info.ToString()); m_state = MyState.Disconnected; } }; |
进行防止与服务器断开连接的处理.假如可能出现小狗咬坏网线的情况. 如下所示,实现LeaveServerHandler. m_netClient.LeaveServerHandler = (ErrorInfo info) => { Debug.Log(info.ToString()); m_state = MyState.Disconnected; }; |
现在,让我们运行客户端.按下Login按键显示"Connecting..."这样的状态. 因为,没有可连接的服务器,所以需要添加服务器,下一节再进行介绍.
第三篇:Unity结合C++开发服务器实现多人游戏(三) |