创建10个线程,每个线程创建一个socket连接
时间: 2024-01-21 21:02:50 浏览: 35
以下是示例代码,实现创建10个线程,每个线程创建一个socket连接:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
class Program
{
static void Main()
{
const int numThreads = 10;
Thread[] threads = new Thread[numThreads];
for (int i = 0; i < numThreads; i++)
{
threads[i] = new Thread(() =>
{
// 创建socket连接
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000));
// 发送和接收数据
byte[] buffer = new byte[1024];
int count = socket.Receive(buffer);
string message = Encoding.UTF8.GetString(buffer, 0, count);
Console.WriteLine("Thread {0} received message: {1}", Thread.CurrentThread.ManagedThreadId, message);
socket.Send(Encoding.UTF8.GetBytes("Hello from thread " + Thread.CurrentThread.ManagedThreadId));
// 关闭连接
socket.Shutdown(SocketShutdown.Both);
socket.Close();
});
threads[i].Start();
}
// 等待所有线程运行完毕
for (int i = 0; i < numThreads; i++)
{
threads[i].Join();
}
Console.WriteLine("All threads have completed.");
}
}
```
上述代码中,我们使用一个长度为10的线程数组来保存所有线程,每个线程都创建一个socket连接,并发送和接收数据。在每个线程的回调函数中,我们先创建一个socket连接,然后发起连接请求。如果连接成功,我们就可以进行数据的发送和接收操作。在本例中,我们先接收服务端发送的数据,然后发送一条包含当前线程ID的消息。最后,我们关闭连接。在主线程中,我们使用Thread.Join方法等待所有线程运行完毕,然后打印一条完成的消息。