一套完整的unity的socket网络通信模块

这里只讲一些主要内容,完整代码请到我的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();  
		}  
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值