NET - ClientManager.cs - 客户端连接器
/// <summary>
/// 这个是用来管理跟服务器端的Socket连接
/// </summary>
public class ClientManager :BaseManager {
private const string IP = "127.0.0.1";
private const int PORT = 6688;
private Socket clientSocket;
//实例化信息
private Message msg = new Message();
public ClientManager(GameFacade facade) : base(facade) { }
//连接服务器
public override void OnInit(){}
//监听
private void Start(){}
//接收数据
private void ReceiveCallback(IAsyncResult ar){}
private void OnProcessDataCallback(动作码,数据){}
//发送请求
public void SendRequest(请求码,动作码,数据){}
//关闭游戏
public override void OnDestroy(){}
/// <summary>
/// 这个是用来管理跟服务器端的Socket连接
/// </summary>
public class ClientManager :BaseManager {
private const string IP = "127.0.0.1";
private const int PORT = 6688;
private Socket clientSocket;
//实例化信息
private Message msg = new Message();
public ClientManager(GameFacade facade) : base(facade) { }
//连接服务器
public override void OnInit(){}
//监听
private void Start(){}
//接收数据
private void ReceiveCallback(IAsyncResult ar){}
private void OnProcessDataCallback(ActionCode actionCode,string data){}
//发送请求
public void SendRequest(RequestCode requestCode, ActionCode actionCode, string data){}
//关闭游戏
public override void OnDestroy(){}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net.Sockets;
using System;
using Common;
/// <summary>
/// 这个是用来管理跟服务器端的Socket连接
/// </summary>
public class ClientManager :BaseManager {
private const string IP = "127.0.0.1";
private const int PORT = 6688;
private Socket clientSocket;
//实例化信息
private Message msg = new Message();
public ClientManager(GameFacade facade) : base(facade) { }
//连接服务器
public override void OnInit()
{
base.OnInit();
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
clientSocket.Connect(IP, PORT);
Start();
}
catch (Exception e)
{
Debug.LogWarning("无法连接到服务器端,请检查您的网络!!" + e);
}
}
//监听
private void Start()
{
clientSocket.BeginReceive(msg.Data,msg.StartIndex,msg.RemainSize, SocketFlags.None, ReceiveCallback, null);
}
//接收数据
private void ReceiveCallback(IAsyncResult ar)
{
try
{
if (clientSocket == null || clientSocket.Connected == false) return;
int count = clientSocket.EndReceive(ar);
msg.ReadMessage(count, OnProcessDataCallback);
Start();
}
catch(Exception e)
{
Debug.Log(e);
}
}
private void OnProcessDataCallback(ActionCode actionCode,string data)
{
facade.HandleReponse(actionCode, data);
}
//发送请求
public void SendRequest(RequestCode requestCode, ActionCode actionCode, string data)
{
byte[] bytes = Message.PackData(requestCode, actionCode, data);
clientSocket.Send(bytes);
}
//关闭游戏
public override void OnDestroy()
{
base.OnDestroy();
try
{
clientSocket.Close();
}catch(Exception e)
{
Debug.LogWarning("无法关闭跟服务器端的连接!!" + e);
}
}
}