示例#1
0
        void TcpServer_ClientConnected(object sender, AsyncEventArgs e)
        {
            AsyncTCPServer server = sender as AsyncTCPServer;
            int            temp   = ServersList.ToList <ServersInfo>().FindIndex(ex => (ex.IPAddr.ToString() == server.Address.ToString() && ex.Port == server.Port));

            if (temp == -1)//列表中没找到服务器
            {
                return;
            }
            TCPClientState client     = e._state as TCPClientState;
            ClientsInfo    clientinfo = new ClientsInfo();

            clientinfo.IpEndPort    = client.TcpClient.Client.RemoteEndPoint;
            clientinfo.ClientState  = client;
            clientinfo.ParentServer = ServersList[temp];
            App.Current.Dispatcher.Invoke((System.Action)(() =>
            {
                ServersList[temp].ClientsList.Add(clientinfo);
                foreach (var ser in ServersList)
                {
                    ser.IsSelected = false;
                    foreach (var tmp in ser.ClientsList)
                    {
                        tmp.IsSelected = false;
                    }
                }
                SelectServer = ServersList[temp];
                SelectServer.SelectClient            = clientinfo;
                SelectServer.SelectClient.IsSelected = true;
                IsHaveClent = true;
            }));
        }
示例#2
0
        static void Main(string[] args)
        {
            Console.WriteLine("输入监听ip:");
            string ip = Console.ReadLine();

            myTcpServer = new AsyncTCPServer(IPAddress.Parse(ip), 3000);
            //禁止关闭按钮
            Util.DisableCloseButton(Console.Title);
            #region 事件注册
            myTcpServer.ClientConnected    += MyTcpServer_ClientConnected;
            myTcpServer.DataReceived       += MyTcpServer_DataReceived;
            myTcpServer.CompletedSend      += MyTcpServer_CompletedSend;
            myTcpServer.ClientDisconnected += MyTcpServer_ClientDisconnected;
            #endregion

            myTcpServer.Start();
            Console.WriteLine("服务器已经启动,正在监听中.....");
            while (true)            //程序停在这里
            {
                string arg = Console.ReadLine();
                if (arg == "exit")
                {
                    break;
                }
            }
            myTcpServer.CloseAllClient();
            myTcpServer.Stop();
            Console.WriteLine("任务已经结束,按回车退出程序...");
            Console.ReadLine();
        }
示例#3
0
        public void Init(int pPort = 9988)
        {
            m_Server = new AsyncTCPServer(pPort);

            m_Server.ClientConnected    += OnClientConnected;
            m_Server.ClientDisconnected += OnClientDisconnected;
            m_Server.DataReceived       += OnDataReceived;
            m_Server.ClientClosed       += OnClientClosed;
        }
示例#4
0
        private void Windows_loading(object sender, RoutedEventArgs e)
        {
            IPAddress iP = IPAddress.Parse("192.168.18.27");

            TcpServer = new AsyncTCPServer(55555);
            TcpServer.Start();
            TcpServer.DataReceived       += TcpServer_DataReceived;
            TcpServer.ClientConnected    += TcpServer_ClientConnected;
            TcpServer.ClientDisconnected += TcpServer_ClientDisconnected;
            TcpServer.CompletedSend      += TcpServer_CompletedSend;
            TcpServer.NetError           += TcpServer_NetError;
            TcpServer.OtherException     += TcpServer_OtherException;
            TcpServer.PrepareSend        += TcpServer_PrepareSend;
        }
示例#5
0
 public void SendData(byte[] senddata, AsyncTCPServer tCPServer)
 {
     try
     {
         // state = (TCPClientState)tCPServer._clients.ToArray()[0];
         var temp = tCPServer._clients.ToArray();
         foreach (var a in temp)
         {
             tCPServer.Send((TCPClientState)a, senddata);
         }
         // tCPServer.Send(state.TcpClient, senddata);
     }
     catch (SocketException ex)
     {
         throw ex;
     }
 }
示例#6
0
        void TcpServer_ClientDisconnected(object sender, AsyncEventArgs e)
        {
            AsyncTCPServer server = sender as AsyncTCPServer;
            int            temp   = ServersList.ToList <ServersInfo>().FindIndex(ex => (ex.IPAddr.ToString() == server.Address.ToString() && ex.Port == server.Port));

            if (temp == -1)//列表中没找到服务器
            {
                return;
            }
            TCPClientState client   = e._state as TCPClientState;
            EndPoint       endpoint = client.TcpClient.Client.RemoteEndPoint;

            App.Current.Dispatcher.Invoke((System.Action)(() =>
            {
                var tmp = ServersList[temp].ClientsList.First(ex => ex.IpEndPort == endpoint);
                ServersList[temp].ClientsList.Remove(tmp);
            }));
        }
示例#7
0
        private void btn_Share_Click(object sender, EventArgs e)
        {
            if (!shareDesktop)
            {
                if (tcpServer != null)
                {
                    tcpServer.ClientDisConnected -= TcpServer_ClientDisConnected;
                    tcpServer.ClientReceiveData  -= TcpServer_ClientReceiveData;
                }
                tcpServer = new AsyncTCPServer(IPAddress.Any.ToString(), Convert.ToInt32(txt_Port.Text), 50);
                tcpServer.ClientDisConnected += TcpServer_ClientDisConnected;
                tcpServer.ClientReceiveData  += TcpServer_ClientReceiveData;
                ResMsg rm = tcpServer.Start();
                if (!rm.Result)
                {
                    ShowLog("开始分享失败,原因:" + rm.Message);
                    return;
                }
                shareDesktop = true;
                Thread thShare = new Thread(new ThreadStart(ShareDesktop));
                thShare.IsBackground = true;
                thShare.Start();

                Thread thParseCmd = new Thread(new ThreadStart(ParseCmds));
                thParseCmd.IsBackground = true;
                thParseCmd.Start();
                btn_Share.Text = "停止分享";
                ShowLog("开始分享");
            }
            else
            {
                shareDesktop = false;
                tcpServer.Stop();
                btn_Share.Text = "开始分享";
                ShowLog("停止分享");
            }
        }
示例#8
0
 public ServerAction(IImageReceivedHandler imageReceivedHandler)
 {
     _tcpListener = new AsyncTCPServer(ListenPort);
     _tcpListener.SetHandleReceivedData(imageReceivedHandler);
 }