c# tcplistener 异步
时间: 2024-10-08 08:22:37 浏览: 52
在 C# 中,TcpListener 类用于监听 TCP 端口并接受连接请求。当涉及到异步操作时,可以使用 BeginAccept 或使用 `async` 和 `await` 关键字来实现非阻塞的等待。以下是使用 async 方法实现 TcpListener 异步接收连接的基本步骤:
```csharp
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;
public async Task ListenForConnectionsAsync(int port)
{
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
while (true)
{
// 创建一个任务来处理接受的连接
await listener.AcceptTcpClientAsync().ConfigureAwait(false);
// 在这里处理新的客户端连接,例如创建一个新的线程或委托
using (TcpClient client = listener.AcceptTcpClient())
{
Console.WriteLine($"Accepted connection from {client.Client.RemoteEndPoint}");
// 如果需要,你可以在这里启动另一个异步方法来处理数据传输
// 使用 NetworkStream 对象进行读写操作
using var networkStream = client.GetStream();
byte[] buffer = new byte[4096];
int bytesRead = await networkStream.ReadAsync(buffer, 0, buffer.Length);
// 进行数据交互...
}
}
}
// 调用方法
ListenForConnectionsAsync(8080).Wait(); // 使用Task.Run()替换Wait()以避免阻塞UI线程
阅读全文