从同一台PC多次连接到同一IP地址和端口

时间:2019-04-11 08:48:53

标签: c# tcp tcpclient

我正在测试设备,要测试的项目之一是他们说我可以根据需要连接尽可能多的设备。显然有一个限制,但这是什么。我以为我可以将一个简单的应用程序放在一起,以便仅与设备建立连接。

我在c#中发现建立连接很容易,因此我的理论是给每个连接一个唯一的名称,例如tcpclnt_1,tcpclnt_2,tcpclnt_3等。

我从一个连接开始,并且运行良好。我的问题是我可以对每个名称进行硬编码,以便声明

public TcpClient tcpclnt_1 = new TcpClient();
public TcpClient tcpclnt_2 = new TcpClient();

但这不是动态的。以下是一些代码,概述了我想做的事情。由于无法找到将每个tcpclnt_x动态更改为唯一名称的方法,因此无法使用。我什至可能没有以正确的方式进行操作,所以关于如何多次连接到同一设备的任何想法?

 public TcpClient tcpclnt_x = new TcpClient();
 int iterations = Decimal.ToInt32(numupdown_iterations.Value);

        private void btn_creatConnections_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < iterations; i++)
            {
                tcpclnt_x.Connect("192.168.127.254", 721);
            }

        }

        private void btn_delete_connections_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < iterations; i++)
            {
                tcpclnt_x.Close();
            }
        }

1 个答案:

答案 0 :(得分:2)

您需要调查列表和其他集合。

public List<TcpClient> tcpclnts = new List<TcpClient>();
int iterations = Decimal.ToInt32(numupdown_iterations.Value);

    private void btn_creatConnections_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < iterations; i++)
        {
            var client = new TcpClient();
            client.Connect("192.168.127.254", 721);
            tcpclnts.Add(client);
        }

    }

    private void btn_delete_connections_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < iterations; i++)
        {
            tcpclnts[x].Close();
        }
    }