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; })); }
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(); }
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; }
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; }
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; } }
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); })); }
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("停止分享"); } }
public ServerAction(IImageReceivedHandler imageReceivedHandler) { _tcpListener = new AsyncTCPServer(ListenPort); _tcpListener.SetHandleReceivedData(imageReceivedHandler); }