/// <summary> /// 连接回调 /// </summary> /// <param name="ar">Ar.</param> public void ConnectCallback(IAsyncResult ar) { // 从state对象获取socket. Socket client = (Socket)ar.AsyncState; bool result = true; try { ClientNetwork._bLoginOut = false; client.EndConnect(ar); // 完成连接. Utils.LogSys.Log("连接成功!"); result = true; Socket handler = client; recieveState = new MsgStream(); if (isDisposed) { return; } recieveState.workSocket = handler; if (readThreadObj != null) { readThreadObj.toStop = true;//让该线程自然结束 } readThreadObj = new ClientSocketReadThread(); readThreadObj.recieveState = recieveState; readThread = new Thread(new ThreadStart(readThreadObj.BeginListen)); //创建一个新的线程专门用于处理监听 readThread.Start(); } catch (SocketException e) { // 连接失败 // TODO: 展示连接失败 Utils.LogSys.Log("连接失败!" + e.Message); result = false; } if (isDisposed) { return; } EventMultiArgs args = new EventMultiArgs(); args.AddArg("result", result); EventSystem.CallEvent(EventID.SOKECT_CONNECT_RESULT, args); }
/// <summary> /// 关闭连接 /// </summary> public void Close() { if (readThreadObj != null) { readThreadObj.toStop = true; readThreadObj = null; } if (clientSocket != null) { try { clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); } catch { } clientSocket = null; } }