我想在C#中创建一个套接字数组。这是我如何有1个插座:C#插座阵列
static Socket my_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
但是,无论我尝试它不会让我做一个数组。
我该怎么做?
我想在C#中创建一个套接字数组。这是我如何有1个插座:C#插座阵列
static Socket my_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
但是,无论我尝试它不会让我做一个数组。
我该怎么做?
除了使用数组,您可以使用List,它基本上是一个数组,但经过改进,并提供了更多灵活性,例如使用Linq添加/删除和搜索。这里有一个例子,你会如何申报清单,并添加三个插座给它:
List<Socket> MySocketList = new List<Socket>();
Socket Socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket Socket2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket Socket3 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
MySocketList.Add(Socket1);
MySocketList.Add(Socket2);
MySocketList.Add(Socket3);
// MySocketList[0] is 'Socket1'
编辑:OP的评论后:
List<Socket> MySocketList = new List<Socket>();
for(int i = 0; i < 1015; i++)
{
Socket NewSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
MySocketList.Add(NewSocket);
}
// MySocketList now contains 1015 sockets, you can loop trough them, and open a connection:
foreach(Socket CurrentSocket in MySocketList)
{
CurrentSocket.Connect(...);
}
实际上,我将需要大约1000-1050个套接字来调试一个Agentserver,这就是为什么我想创建一个数组,这将节省大量的输入。 –
我更新了我的答案,我认为,回答你的问题。 –
感谢您的答案,它工作正常! –
您需要先创建数组,然后填充你的数组与套接字对象。
Socket[] my_sockets = new Socket[10];
foreach(Socket a_socket in my_sockets)
{
a_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
}
一旦你创建你的数组(容器),你需要用套接字来填充它。如果你有很多的价值观,最好的办法是采用了经典的for
循环:
// Declaration
Socket[] sockets = new Socket[numberOfSocketsYouNeed];
// Initalization
for (int i = 0; i < numberOfSocketsYouNeed; i++)
{
sockets[i] = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
您也可以合并两个步骤,LINQ,但你会得到一个小的性能影响较大的阵列。
Scoket[] sockets = Enumerable.Range(0, numberOfSocketsYouNeed)
.Select(_ => new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
.ToArray();
谢谢你的回答! –
阅读有关阵列http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx – wudzik
'不管我尝试它不会让我的数组。 '例如? – I4V
我试过 static Socket [] my_socket = new Socket [10](AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); and static Socket [] my_socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)[10]; –