/// <summary> /// 回调函数 /// </summary> /// <param name="ar"></param> private void TCPCallBack(IAsyncResult ar) { ZXBC_TCPClient client = (ZXBC_TCPClient)ar.AsyncState; if (client.NetWork.Connected) { NetworkStream ns = client.NetWork.GetStream(); try { byte[] recdata = new byte[ns.EndRead(ar)]; Array.Copy(client.buffer, recdata, recdata.Length); if (recdata.Length > 0) { if (DataReceived != null) { DataReceived.BeginInvoke(client.Name, recdata, null, null);//异步输出数据 } ns.BeginRead(client.buffer, 0, client.buffer.Length, new AsyncCallback(TCPCallBack), client); } else { client.DisConnect(); lstClient.Remove(client); BindLstClient(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); client.DisConnect(); lstClient.Remove(client); BindLstClient(); } } }
public bool SendData(byte[] data) { if (TCPClient_Connect_listBox.SelectedItems.Count > 0) { for (int i = 0; i < TCPClient_Connect_listBox.SelectedItems.Count; i++) { ZXBC_TCPClient selClient = (ZXBC_TCPClient)TCPClient_Connect_listBox.SelectedItems[i]; try { selClient.NetWork.GetStream().Write(data, 0, 1024); } catch (Exception ex) { MessageBox.Show(selClient.Name + ":" + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } return(true); } else { MessageBox.Show("无可用连接", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } }
/// <summary> /// 连接新的服务端 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TCP_Connect_button_Click(object sender, EventArgs e) { ZXBC_TCPClient client = new ZXBC_TCPClient(); try { client.NetWork = new TcpClient(); client.NetWork.Connect(TCPClient_IP_textBox.Text.Trim(), (int)TCPClient_Port_numericUD.Value);//连接服务端 client.SetName(); client.NetWork.GetStream().BeginRead(client.buffer, 0, client.buffer.Length, new AsyncCallback(TCPCallBack), client); lstClient.Add(client); BindLstClient(); } catch (Exception ex) { client.DisConnect(); MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// 客户端连接初始化 /// </summary> /// <param name="o"></param> private void Acceptor(IAsyncResult o) { TcpListener server = o.AsyncState as TcpListener; try { //初始化连接的客户端 ZXBC_TCPClient newClient = new ZXBC_TCPClient(); newClient.NetWork = server.EndAcceptTcpClient(o); lstClient.Add(newClient); BindLstClient(); newClient.NetWork.GetStream().BeginRead(newClient.buffer, 0, newClient.buffer.Length, new AsyncCallback(TCPCallBack), newClient); server.BeginAcceptTcpClient(new AsyncCallback(Acceptor), server);//继续监听客户端连接 } catch (ObjectDisposedException ex) { //监听被关闭 } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }