C#套接字数组
本文关键字:数组 套接字 | 更新日期: 2023-09-27 18:28:50
我想在C#中创建一个套接字数组。这就是我有1个插座的方式:
static Socket my_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
但是,无论我尝试什么,它都不会让我做出阵列。
我该怎么做?
您可以使用List,而不是使用数组,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(...);
}
创建数组(容器)后,需要用套接字填充它。如果你有很多值,最好的方法是使用经典的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();
您需要首先创建数组,然后用套接字对象填充数组。
Socket[] my_sockets = new Socket[10];
foreach(Socket a_socket in my_sockets)
{
a_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
}