TCP代理程序用c sharp

时间:2017-03-07 15:36:28

标签: tcp proxy

这是带有c#的TCP代理,我希望多个客户端到我的代理(如下面的代码),然后到服务器只使用一个TCP连接(因为服务器是旧的PLC设备,它只支持一个连接)。

我的问题是如何使用从代理到服务器的单个TCP连接。

我的英语很差,非常感谢你的帮助。

class Program
{
    // proxy listenning
    static TcpListener listener = new TcpListener(IPAddress.Any, 9600);
    const int BUFFER_SIZE = 4096;

    static void Main(string[] args)
    {
        listener.Start();

        // Accept clients.
        while (true)
        {
            var client = listener.AcceptTcpClient();
            var clientStream = client.GetStream();

            //problem was here: how to use just single connection
            TcpClient server = new TcpClient("10.110.59.1", 9600);
            var serverStream = server.GetStream();

            new Task(() => {

                new Task(() => {
                byte[] message = new byte[BUFFER_SIZE];
                int clientBytes;
                while (true)
                {
                    clientBytes = clientStream.Read(message, 0, BUFFER_SIZE);
                    serverStream.Write(message, 0, clientBytes);

                }).Start();

                new Task(() => {
                    byte[] message = new byte[BUFFER_SIZE];
                    int serverBytes;
                    while (true)
                    {
                        serverBytes = serverStream.Read(message, 0, BUFFER_SIZE);
                        clientStream.Write(message, 0, serverBytes);
                    }
                    client.Close();
                }).Start();
            }).Start();
        }

    }//end main
}//end class

0 个答案:

没有答案