private void GetTcpStream(IForm mainForm) { _tcpc.GetStream().BeginRead(_mrx, 0, _mrx.Length, ar => { try { _tcpc = ar.AsyncState as TcpClient; if (_tcpc == null) { MessageBox.Show(@"The TCP client was not instantiated."); return; } var countBytes = _tcpc.GetStream().EndRead(ar); if (countBytes == 0) { MessageBox.Show(@"Connection was broken"); return; } var received = Encoding.ASCII.GetString(_mrx, 0, countBytes); mainForm.SetOutput(received); GetTcpStream(mainForm); } catch (Exception ex) { MessageBox.Show(string.Format("There was an error: {0}", ex.Message)); } }, _tcpc); }
///------------------------------------------------------------------------------------------------- /// <summary> Accept TCP client. </summary> /// /// <remarks> Justin, 7/11/2015. </remarks> /// /// <param name="byteArrLength"> Length of the byte array. </param> /// <param name="form1"> The first form. </param> /// <param name="response"> The response. </param> /// /// <returns> An ITcpResponse. </returns> ///------------------------------------------------------------------------------------------------- private ITcpResponse AcceptTcpClient(long byteArrLength, IForm form1, ITcpResponse response) { MTcpListener.BeginAcceptTcpClient(iar => { try { //cast the iar async state contains reference to original tcp object that called begin accept tcp client //cast object to a listener response = _tcpListnerConverter.Convert(iar); if (response.State != TcpState.Success) { TcpMessageService.ShowMessage("There was an error ", response); return; } MTcpClientService.EndAcceptTcpClient(response.AsyncResult); form1.SetOutput("Client Connected..."); AcceptTcpClient(byteArrLength, form1, response); response = MTcpClientService.BeginReadStream(byteArrLength, form1); } catch (Exception ex) { response.Result = ex.Message; response.State = TcpState.Failed; } }, MTcpListener); return response; }