这里只讲一些主要内容,完整代码请到我的github里下载:https://github.com/LiuFeng1011/UnityNetWork/tree/master/Assets/Code/Net
SocketHelper类
主要的通信类,socket的管理放在这里
下面说一下一些主要的方法
1.连接服务器,这个都写了比较详细的注释,一看就会明白
/// <summary>
/// 连接服务器
/// </summary>
/// <returns>The connect.</returns>
/// <param name="serverIp">Server ip.</param>
/// <param name="serverPort">Server port.</param>
/// <param name="connectCallback">Connect callback.</param>
/// <param name="connectFailedCallback">Connect failed callback.</param>
public void Connect(string serverIp,int serverPort,ConnectCallback connectCallback,ConnectCallback connectFailedCallback){
connectDelegate = connectCallback;
connectFailedDelegate = connectFailedCallback;
//采用TCP方式连接
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//服务器IP地址
IPAddress address = IPAddress.Parse(serverIp);
//服务器端口
IPEndPoint endpoint = new IPEndPoint(address,serverPort);
//异步连接,连接成功调用connectCallback方法
IAsyncResult result = socket.BeginConnect(endpoint, new AsyncCallback(ConnectedCallback), socket);
//这里做一个超时的监测,当连接超过5秒还没成功表示超时
bool success = result.AsyncWaitHandle.WaitOne(5000, true);
if (!success)
{
//超时
Closed();
if(connectFailedDelegate != null){
connectFailedDelegate();
}
}
else
{
//与socket建立连接成功,开启线程接受服务端数据。
isStopReceive = false;
Thread thread = new Thread(new ThreadStart(ReceiveSorket));
thread.IsBackground = true;
thread.Start();
}