Пример #1
0
        /// <summary>
        /// 监听客户端请求
        /// </summary>
        private void ListenClientConnect()
        {
            TcpClient newClient = null;

            while (true)
            {
                ListenClientDelegate d      = new ListenClientDelegate(ListenClient);
                IAsyncResult         result = d.BeginInvoke(out newClient, null, null);
                //使用轮询方式来判断异步操作是否完成
                while (result.IsCompleted == false)
                {
                    if (isExit)
                    {
                        break;
                    }
                    Thread.Sleep(250);
                }
                //获取Begin 方法的返回值和所有输入/输出参数
                d.EndInvoke(out newClient, result);
                if (newClient != null)
                {
                    //每接受一个客户端连接,就创建一个对应的线程循环接收该客户端发来的信息
                    User   user          = new User(newClient);
                    Thread threadReceive = new Thread(ReceiveData);
                    threadReceive.Start(user);
                    userList.Add(user);
                    AddItemToListBox(string.Format("[{0}]进入", newClient.Client.RemoteEndPoint));
                    AddItemToListBox(string.Format("当前连接用户数:{0}", userList.Count));
                }
                else
                {
                    break;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 监听客户端请求
        /// </summary>
        private void ListenClientConnect()
        {
            TcpClient newClient = null;

            while (true)
            {
                ListenClientDelegate d      = new ListenClientDelegate(ListenClient);
                IAsyncResult         result = d.BeginInvoke(out newClient, null, null);
                //使用轮询方式来判断异步操作是否完成
                while (result.IsCompleted == false)
                {
                    if (isExit)
                    {
                        break;
                    }
                    Thread.Sleep(250);
                }
                //获取Begin 方法的返回值和所有输入/输出参数
                d.EndInvoke(out newClient, result);
                if (newClient != null)
                {
                    //每接受一个客户端连接,就创建一个对应的线程循环接收该客户端发来的信息
                    TcpUser user          = new TcpUser(newClient);
                    Thread  threadReceive = new Thread(ReceiveData);
                    threadReceive.Start(user);
                    userList.Add(user);
                }
                else
                {
                    break;
                }
            }
        }
Пример #3
0
        //<summary>
        //接收客户端连接
        //</summary>
        private void ListenClientConnect()
        {
            TcpClient newClient = null;

            while (true)
            {
                //allDone.Reset();
                Application.DoEvents();
                ListenClientDelegate d      = new ListenClientDelegate(ListenClient);
                IAsyncResult         result = d.BeginInvoke(out newClient, null, null);
                //使用轮询方式来判断异步操作是否完成
                if (result.IsCompleted == false)
                {
                    //获取Begin 方法的返回值和所有输入/输出参数
                    d.EndInvoke(out newClient, result);
                }
                //allDone.WaitOne();
                if (newClient != null)
                {
                    //RegisterSession(newClient.Client);
                    //每接受一个客户端连接,就创建一个对应的线程循环接收该客户端发来的信息
                    ClientUser user = new ClientUser(newClient);
                    user.ThreadReceive = new Thread(ReceiveData);
                    user.ThreadReceive.Start(user);
                }
                else
                {
                    break;
                }
            }
        }
Пример #4
0
        /// <summary>
        /// 監聽用戶端請求
        /// </summary>
        private void ListenClientConnect()
        {
            TcpClient newClient = null;

            while (true)
            {
                ListenClientDelegate d      = new ListenClientDelegate(ListenClient);
                IAsyncResult         result = d.BeginInvoke(out newClient, null, null);
                //使用輪詢方式來判斷非同步作業是否完成
                while (result.IsCompleted == false)
                {
                    if (isExit)
                    {
                        break;
                    }
                    Thread.Sleep(250);
                }
                //獲取Begin 方法的返回值和所有輸入/輸出參數
                d.EndInvoke(out newClient, result);
                if (newClient != null)
                {
                    //每接受一個用戶端連接,就創建一個對應的執行緒迴圈接收該用戶端發來的資訊
                    User   user          = new User(newClient);
                    Thread threadReceive = new Thread(ReceiveData);
                    threadReceive.Start(user);
                    userList.Add(user);
                    AddItemToListBox(string.Format("[{0}]進入", newClient.Client.RemoteEndPoint));
                    AddItemToListBox(string.Format("當前連接用戶數:{0}", userList.Count));
                }
                else
                {
                    break;
                }
            }
        }
Пример #5
0
        /// <summary>
        /// 监听客户端请求
        /// </summary>
        private void ListenClientConnect()
        {
            TcpClient newClient = null;

            while (true)
            {
                ListenClientDelegate d      = new ListenClientDelegate(ListenClient);
                IAsyncResult         result = d.BeginInvoke(out newClient, null, null);
                //使用轮询方式来判断异步操作是否完成
                while (result.IsCompleted == false)
                {
                    if (isExit)
                    {
                        break;
                    }
                    Thread.Sleep(100);
                }
                //获取Begin 方法的返回值和所有输入/输出参数
                d.EndInvoke(out newClient, result);
                if (newClient != null)
                {
                    //每接受一个客户端连接,就创建一个对应的线程循环接收该客户端发来的信息
                    ServerInfo info          = new ServerInfo(newClient);
                    Thread     threadReceive = new Thread(ReceiveData)
                    {
                        IsBackground = true
                    };
                    threadReceive.Start(info);
                    dgAddClient(info);
                    dgLog(string.Format("[{0}]已连接", newClient.Client.RemoteEndPoint));
                    //dgLog(string.Format("当前连接客户端数:{0}", InfoList.Count));
                }
                else
                {
                    break;
                }
            }
        }
Пример #6
0
        /// <summary>
        /// 监听客户端请求
        /// </summary>
        private void ListenClientConnect()
        {
            TcpClient newClient = null;

            while (true)
            {
                ListenClientDelegate d      = new ListenClientDelegate(ListenClient);
                IAsyncResult         result = d.BeginInvoke(out newClient, null, null);
                //使用轮询方式来判断异步操作是否完成
                while (result.IsCompleted == false)
                {
                    if (Instance.ISExit)
                    {
                        break;
                    }
                    Thread.Sleep(50);
                    //Thread.Sleep(100);
                }
                //获取Begin 方法的返回值和所有输入/输出参数
                d.EndInvoke(out newClient, result);
                if (newClient != null)
                {
                    //每接受一个客户端连接,就创建一个对应的线程循环接收该客户端发来的信息
                    User user = new User(newClient);
                    user.IP = newClient.Client.RemoteEndPoint.ToString();
                    //日志
                    Console.WriteLine(string.Format("用户{0}上线", user.IP));
                    Thread threadReceive = new Thread(ReceiveData);
                    threadReceive.Start(user);
                    Instance.UserList.Add(user);
                }
                else
                {
                    break;
                }
            }
        }
Пример #7
0
 /// <summary>
 /// 监听客户端请求
 /// </summary>
 private void ListenClientConnect()
 {
     TcpClient newClient = null;
     while (true)
     {
         ListenClientDelegate d = new ListenClientDelegate(ListenClient);
         IAsyncResult result = d.BeginInvoke(out newClient, null, null);
         //使用轮询方式来判断异步操作是否完成
         while (result.IsCompleted == false)
         {
             if (isExit)
                 break;
             Thread.Sleep(100);
         }
         //获取Begin 方法的返回值和所有输入/输出参数
         d.EndInvoke(out newClient, result);
         if (newClient != null)
         {
             //每接受一个客户端连接,就创建一个对应的线程循环接收该客户端发来的信息
             ServerInfo info = new ServerInfo(newClient);
             Thread threadReceive = new Thread(ReceiveData){IsBackground = true};
             threadReceive.Start(info);
             dgAddClient(info);
             dgLog(string.Format("[{0}]已连接", newClient.Client.RemoteEndPoint));
             //dgLog(string.Format("当前连接客户端数:{0}", InfoList.Count));
         }
         else
         {
             break;
         }
     }
 }
Пример #8
0
 /// <summary>监听客户端请求</summary>
 private void ListenClientConnect()
 {
     TcpClient newClient = null;
     while (true)
     {
         ListenClientDelegate d = new ListenClientDelegate(ListenClient);
         IAsyncResult result = d.BeginInvoke(out newClient, null, null);
         //使用轮询方式来判断异步操作是否完成
         while (result.IsCompleted == false)
         {
             if (isExit)
             {
                 break;
             }
             Thread.Sleep(250);
         }
         //获取Begin方法的返回值和所有输入/输出参数
         d.EndInvoke(out newClient, result);
         if (newClient != null)
         {
             //每接受一个客户端连接,就创建一个对应的线程循环接收该客户端发来的信息
             User user = new User(newClient);
             Thread threadReceive = new Thread(ReceiveData);
             threadReceive.Start(user);
             userList.Add(user);
             service.AddItem(string.Format("[{0}]进入", newClient.Client.RemoteEndPoint));
             service.AddItem(string.Format("当前连接用户数:{0}", userList.Count));
         }
         else
         {
             break;
         }
     }
 }