public void disconnect() { Debug.Log("please disconnect!!!!!!!!!!!!!!!!!!!!!!!!!!@@@@@@"); //if(socketReceiveThread!=null&&socketReceiveThread.ThreadState!=ThreadState.Suspended&&socketReceiveThread.ThreadState!=ThreadState.SuspendRequested)socketReceiveThread.Suspend(); if (connected) { connected = false; state = BGSocketState.disconnected; try { if (socketReceiveThread != null) { if (socketReceiveThread.ThreadState != System.Threading.ThreadState.Aborted) { socketAbort = true; socketReceiveThread.Abort(); socketReceiveThread.Join(); } //socketReceiveThread = null; } Closed(); } catch (Exception e) { Debug.LogWarning("Close error:::" + e); } } }
public void onUpdate(float delta) { ReceiveAllTime(); switch (state) { case BGSocketState.disconnected: if (connected) { FrameDelayCall.remove(checkcall); if (socket != null) { socket.Disconnect(true); } //socket=null; //socketReceiveHandler=null; //socketReceiveThread=null; bgISocket.scoketDiconnected(); } connected = false; break; } state = BGSocketState.idle; }
/* * private void ReceiveAllTime() * { * Debug.Log("ReceiveAllTime"); * if (Connected && connected) * { * try * { * int dataLength = 0; * dataLength = socket.Available; * * if (dataLength != 0) * { * var dataBuffer = new byte[dataLength]; * socket.Receive(dataBuffer); * bgISocket.receiveData(dataBuffer); * } * } * catch (Exception e) * { * Debug.LogWarning(e.ToString()); * Debug.LogWarning("ReceiveAllTime Disconnect"); * if (connected) disconnect(); * } * } * } */ public void onUpdate(float delta) { //if (socketReceiveThread == null) ReceiveAllTime(); if (state > BGSocketState.idle) { switch (state) { case BGSocketState.connected: connected = true; bgISocket.socketConnected(); break; case BGSocketState.disconnected: Debug.Log("#@@$$BGSocketState.disconnected"); bgISocket.scoketDiconnected(); break; case BGSocketState.received: break; } state = BGSocketState.idle; if (connected && connected != Connected) { Debug.LogWarning("Where socket disconned not send by function???"); if (bgISocket != null) { bgISocket.scoketDiconnected(); } } } }
private void connectCallback(IAsyncResult asyncConnect) { Debug.Log("connectResultBack"); try{ int code = socket.EndConnect(asyncConnect); if (code == 0) { Debug.Log("connectSuccess!!!!!!"); connected = true; state = BGSocketState.connected; socketAbort = false; // asyncReceive(); // FrameDelayCall.Add(()=>{ socketReceiveThread = new Thread(ReceiveSocket); socketReceiveThread.IsBackground = true; socketReceiveThread.Start(); // },1); } else { state = BGSocketState.connectFail; disconnect(); connected = false; } }catch (Exception e) { Debug.LogException(e); Debug.Log("connect Time Out"); state = BGSocketState.connectFail; disconnect(); } }
public void disconnect() { if (socket != null) { socket.Disconnect(true); } state = BGSocketState.disconnected; }
/// <summary> /// 连接远程服务器 /// <para> /// connect the remote serverr /// </para> /// </summary> /// <param name="ip"> /// 服务器IP /// IP address of the server /// </param> /// <param name="port"> /// 端口号 /// port /// </param> public void connect(string ipAddress, int port) { zerotimes = 0; state = BGSocketState.connecting; IAsyncResult result = socket.BeginConnect(ipAddress, port, (int)(BGTools.Is3G?MnaConst.ENUM_MNA_NETTYPE.E_MNA_NETTYPE_3G:MnaConst.ENUM_MNA_NETTYPE.E_MNA_NETTYPE_WIFI), (int)(MnaConst.ENUM_MNA_MOBILE_ISP.E_MNA_MOBILE_UNKNOWN), 5000, new AsyncCallback(connectCallback), null); //这里做一个超时的监测,当连接超过5秒还没成功表示超时 }
/// <summary> /// 连接远程服务器 /// <para> /// connect the remote serverr /// </para> /// </summary> /// <param name="ip"> /// 服务器IP /// IP address of the server /// </param> /// <param name="port"> /// 端口号 /// port /// </param> public void connect(string ipAddress, int port) { zerotimes = 0; MonoBehaviour.print(ipAddress.ToString()); state = BGSocketState.connecting; socket.BeginConnect(ipAddress, port, new AsyncCallback(connectCallback), socket); }
private void ReceiveSocket() { Thread.Sleep(100); //在这个线程中接受服务器返回的数据 while (true) { // Thread.Sleep(100); if (socketAbort) { break; } if (!connected) { //与服务器断开连接跳出循环 Debug.Log("Failed to clientSocket server."); //socket.Close(); //disconnect(); state = BGSocketState.disconnected; break; } try { //接受数据保存至bytes当中 var tbytes = new byte[16384]; //Receive方法中会一直等待服务端回发消息 //如果没有回发会一直在这里等着。 int i = socket.Receive(tbytes, 16384); //Debug.Log(i); if (i <= 0) { Debug.Log("Thread receive i invalid."); disconnect(); //socket.Close(); break; } var dataBuffer = new byte[i]; Array.Copy(tbytes, 0, dataBuffer, 0, i); bgISocket.receiveData(dataBuffer); //GC.Collect(); } catch (Exception e) { Debug.LogWarning("Failed to clientSocket error." + e); disconnect(); break; } } }
private void connectCallback(IAsyncResult asyncConnect) { Debug.Log("connectSuccess"); try{ socket.EndConnect(asyncConnect); Debug.Log("connectSuccess!!!!!!"); connected = true; state = BGSocketState.connected; socketAbort = false; // socketReceiveThread = new Thread(ReceiveSocket); // socketReceiveThread.IsBackground = true; // socketReceiveThread.Start(); asyncReceive(); }catch (Exception e) { Debug.Log("connect Time Out"); state = BGSocketState.connectFail; //state = BGSocketState.disconnected; }finally{ } }