private void TCPCopy(NetworkStream remoteStream, NetworkStream localStream) { new Thread(() => { byte[] temp = new byte[1316]; while (this.IsRunning) { try { int size = localStream.Read(temp, 0, temp.Length); if (size <= 0) { break; } remoteStream.Write(temp, 0, size); } catch (Exception ex) { SocketException socEx = ex.InnerException as SocketException; if (socEx == null) { break; } if (socEx.SocketErrorCode != SocketError.TimedOut) { break; } } } remoteStream.DoDispose(); localStream.DoDispose(); }).Start(); }
private void DoTCP() { TcpClient remote = null; TcpClient local = null; NetworkStream remoteStream = null; NetworkStream localStream = null; try { remote = this.createRemoteClient(); local = this.createLocalClient(); remote.ReceiveTimeout = local.ReceiveTimeout = 5000; remoteStream = remote.GetStream(); localStream = local.GetStream(); this.TCPCopy(remoteStream, localStream); this.TCPCopy(localStream, remoteStream); } catch (Exception ex) { //Console.WriteLine(ex.Message); remoteStream.DoDispose(); localStream.DoDispose(); remote.DoDispose(); local.DoDispose(); } }