using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Threading; namespace OpenRA.Server { class Program { static void Main(string[] args) { var left = new TcpListener(1234); left.Start(); var right = new TcpListener(1235); right.Start(); var l = left.AcceptTcpClient().GetStream(); var r = right.AcceptTcpClient().GetStream(); var ll = new Thread(RW(l, r)); var rr = new Thread(RW(r, l)); ll.Start(); rr.Start(); ll.Join(); } static ThreadStart RW(NetworkStream a, NetworkStream b) { return () => { var buf = new byte[4096]; while (true) { var len = a.Read(buf, 0, 4096); b.Write(buf, 0, len); } }; } } }