【发布时间】:2021-03-05 10:44:34
【问题描述】:
所以我目前正在使用套接字,我想打开 3 个端口供客户端套接字连接。因此,如果我手动添加我的线程,这将有效。
Thread t = new Thread(() => SyncServer.StartListening(new IPAddress(new byte[]{127,0,0,1}), port));
t.Start();
Thread t2 = new Thread(() => SyncServer.StartListening(new IPAddress(new byte[]{127,0,0,1}), port + 1));
t2.Start();
....
但我想让它更简洁一些,所以我尝试使用 for 循环
List<Thread> threads = new List<Threads>();
for(int i = 0; i<3;i++)
{
Thread t = new Thread(() => SyncServer.StartListening(new IPAddress(new byte[]{127,0,0,1}), port + i));
t.Start();
threads.Add(t);
}
套接字服务器确实可以正常工作,但是当我使用线程并手动添加它们时。如果我使用 for 循环,带有端口的套接字服务器将不可用。可能是因为线程停止了,我不明白为什么。
注意:SyncServer 是一个静态类,而 StartListening 是一个静态方法。如果我使用 for 循环,它们总是得到最新的端口号(在本例中为 11003)。
【问题讨论】:
标签: c# multithreading sockets for-loop static