C# でソケットの配列を作成したいと思います。これは私が1つのソケットを持っている方法です:
static Socket my_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
しかし、何を試しても配列を作成できません。
どうすればいいのですか?
C# でソケットの配列を作成したいと思います。これは私が1つのソケットを持っている方法です:
static Socket my_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
しかし、何を試しても配列を作成できません。
どうすればいいのですか?
配列を使用する代わりに、基本的に配列であるリストを使用できますが、Linq を使用して追加/削除や検索などの柔軟性が向上し、より柔軟になります。リストを宣言して 3 つのソケットを追加する方法の例を次に示します。
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);
}
2 つの手順を 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)
}