我一直在做一个服务器。我在async
方法中使用TcpListener.AcceptTcpClientAsync(),但我不知道如何真正使它工作。我现在的代码是:接受TCP客户端异步
private static async void StartServer()
{
Console.WriteLine("S: Server started on port {0}", WebVars.ServerPort);
var listener = new TcpListener(WebVars.LocalIp, WebVars.ServerPort);
listener.Start();
var client = await listener.AcceptTcpClientAsync();
}
如何处理客户端?我是否继续编写代码,它会自动创建同一方法的新线程,还是需要执行一些可以帮我实现的魔术方法?
编辑:当前代码:
private static Task HandleClientAsync(TcpClient client)
{
var stream = client.GetStream();
// do stuff
}
/// <summary>
/// Method to be used on seperate thread.
/// </summary>
private static async void RunServerAsync()
{
while (true)
{
Console.WriteLine("S: Server started on port {0}", WebVars.ServerPort);
var listener = new TcpListener(WebVars.LocalIp, WebVars.ServerPort);
listener.Start();
var client = await listener.AcceptTcpClientAsync();
await HandleClientAsync(client);
}
}
请不要包含关于问题标题中使用的语言的信息,除非在没有它的情况下没有意义。标签用于此目的。 –
这是相关的:http://stackoverflow.com/questions/21013751/what-is-the-async-await-equivalent-of-a-threadpool-server – Noseratio