/// <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(); } } }
/// <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); } }