private void Connect(EndPoint srcEndPoint, Socket dstEndPoint)
        {
            var state = new ForwardStruct(sock, dstEndPoint);

            sock.Connect(srcEndPoint);
            sock.BeginReceive(state.Buf, 0, state.Buf.Length, SocketFlags.None, OnDataReceive, state);
        }
        public void Start(IPEndPoint lEndPoint, IPEndPoint rEndPoint)
        {
            sock.Bind(lEndPoint);
            sock.Listen(10);

            while (true)
            {
                Socket             src   = sock.Accept();
                SimpleTcpForwarder dst   = new SimpleTcpForwarder();
                ForwardStruct      state = new ForwardStruct(src, dst.sock);
                dst.Connect(rEndPoint, src);
                src.BeginReceive(state.Buf, 0, state.Buf.Length, 0, OnDataReceive, state);
            }
        }