예제 #1
0
 public virtual void OnComplete(TcpClient client, EnSocketAction enAction)
 {
     if (Completed != null)
     {
         Completed(client, enAction);
     }
     if (enAction == EnSocketAction.Connect)//建立连接后,开始接收数据
     {
         System.Threading.ThreadPool.QueueUserWorkItem(x =>
         {
             while (!isClose)
             {
                 try
                 {
                     Thread.Sleep(20);
                     ReceiveAsync();
                     Thread.Sleep(20);
                 }
                 catch (Exception)
                 {
                     Close();
                     OnComplete(client, EnSocketAction.Close);
                 }
             }
         });
     }
 }
예제 #2
0
        private void tcpCompletedMethod(TcpClient c, EnSocketAction enAction)
        {
            if (c.Client != null)
            {
                IPEndPoint iep = c.Client.RemoteEndPoint as IPEndPoint;
                string     key = string.Format("{0}:{1}", iep.Address.ToString(), iep.Port);
                switch (enAction)
                {
                case EnSocketAction.Connect:
                    //Console.WriteLine("已经与{0}建立连接", key);
                    label2.Text = string.Format("已经与{0}建立连接", key);
                    break;

                case EnSocketAction.SendMsg:
                    Console.WriteLine("{0}:向{1}发送了一条消息", DateTime.Now, key);
                    break;

                case EnSocketAction.Close:
                    client.Close();
                    client = null;
                    Console.WriteLine("服务端连接关闭");
                    this.Close();
                    Application.Exit();
                    break;

                default:
                    break;
                }
            }
            else
            {
                Console.WriteLine("Tcp为空");
            }
        }
예제 #3
0
 /// <summary>
 /// 可供开发重写的实现类
 /// </summary>
 /// <param name="key">指定发送对象</param>
 /// <param name="enAction">消息类型</param>
 public virtual void OnComplete(string key, EnSocketAction enAction)
 {
     Completed?.Invoke(key, enAction);
     if (enAction == EnSocketAction.Connect)//当连接建立时,则要一直接收
     {
         ThreadPool.QueueUserWorkItem(x =>
         {
             while (ListClient.ContainsKey(key) && !isClose)
             {
                 Thread.Sleep(20);
                 ReceiveAsync(key);
                 Thread.Sleep(20);
             }
         });
     }
 }
예제 #4
0
 /// <summary>
 /// 可供开发重写的事件方法
 /// </summary>
 /// <param name="IpPort">IP:端口</param>
 /// <param name="enAction">消息类型</param>
 public virtual void OnComplete(string IpPort, EnSocketAction enAction)
 {
     Completed?.Invoke(IpPort, enAction);
 }