C # tcp трафик-роутер - PullRequest
       1

C # tcp трафик-роутер

0 голосов
/ 03 января 2019

Таким образом, код принимает в качестве ввода IP-адрес и 2 порта.Первый порт используется в слушателе, а ip и второй порт для клиента.Я хочу соединиться с браузером, например, и программа берет то, что она получила, и отправляет ее в ip, используя TcpClient.Затем получает от сервера и отправляет то, что он получил обратно в браузер, и цикл повторяется.По сути, эта программа повторно отправляет мои запросы на другой ip и ответы на них.

Я уже пробовал 2 потока, поэтому он полный дуплекс с StreamWriters и считывателями, и он не работал.Мой код:

public static void createServer(string ip, int port, int fakeport)
    {
        TcpListener ls = new TcpListener(IPAddress.Any, fakeport);
        ls.Start();
        TcpClient inner = ls.AcceptTcpClient();
        NetworkStream innerStream = inner.GetStream();
        StreamReader _sInnerStream = new StreamReader(innerStream, Encoding.ASCII);
        TcpClient serverClient = new TcpClient(ip, port);
        NetworkStream outerStream = serverClient.GetStream();
        StreamReader _sOuterStream = new StreamReader(outerStream, Encoding.ASCII);
        while (true)
        {
            string incomingInner = _sInnerStream.ReadLine();
            Console.WriteLine("Received from inner :" +incomingInner);
            byte[] buffer = Encoding.ASCII.GetBytes(incomingInner);
            // _rOuterStream.WriteLine(incomingInner);
            // _rOuterStream.Flush();
            innerStream.Write(buffer, 0, buffer.Length);

            string response = _sOuterStream.ReadLine();
            Console.WriteLine("Received response from outer :" + incomingInner);

            byte[] buffer1 = Encoding.ASCII.GetBytes(response);
            outerStream.Write(buffer1, 0, buffer1.Length);



        }
    }

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...