예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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;
     }
 }