无法使用异步/等待连接到异步服务器

合页

我正在尝试使用async / await使用异步服务器制作一个非常简单的客户端-服务器应用程序。我在解决方案中有2个项目:

服务器是控制台应用程序。服务器代码:

class Program
{
    static async void Run()
    {
        TcpListener listener = new TcpListener(IPAddress.Loopback, 5000);
        listener.Start();
        Console.WriteLine("Server is running...");
        Console.WriteLine("Server is listening on port 5000...");

        while (true)
        {
            Console.WriteLine("Waiting for client...");
            Socket s = await listener.AcceptSocketAsync();
            //Socket s = listener.AcceptSocket();

            Console.WriteLine("Socket accepted.");
        }
    }

    static void Main(string[] args)
    {
        Run();
    }
}

客户端是Windows窗体应用程序。客户代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        socket.Connect(new IPEndPoint(IPAddress.Loopback, 5000));
    }
}

当我运行两个项目并单击按钮时,我得到System.Net.Sockets.SocketException(无法建立连接,因为目标计算机主动拒绝了它)。

同步服务器工作正常:

//Socket s = await listener.AcceptSocketAsync();
Socket s = listener.AcceptSocket();

我已经搜寻了两天,但没有找到任何可以帮助的东西。我究竟做错了什么?

谢谢您的回答。

大卫·派恩(David Pine)

在控制台应用程序中,当您运行此程序时,该应用程序实际上将立即关闭。您需要调用.Wait()onRun方法来防止这种情况:

static void Main(string[] args)
{
    Run().Wait();
}

此外,您的Run方法应定义如下(Task返回):

static async Task Run()
{
    // Omitted for brevity...
}

否则,就是一劳永逸。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过异步/等待服务器通信?

来自分类Dev

TCPIP异步服务器连接丢失

来自分类Dev

什么是ThreadPool服务器的异步/等待等效项?

来自分类Dev

Blazor(服务器)和异步/等待模式

来自分类Dev

使用Mojolicious的异步聊天服务器

来自分类Dev

无法使用rtmfp连接到服务器

来自分类Dev

无法连接到Openfire服务器(使用smack api)

来自分类Dev

无法使用Adium连接到ejabberd服务器

来自分类Dev

无法使用XMPPFramework连接到远程服务器

来自分类Dev

无法使用MySql连接到Win Xp服务器

来自分类Dev

无法使用libpq连接到PostgreSQL服务器

来自分类Dev

无法使用腻子连接到服务器

来自分类Dev

无法使用WAN IP地址连接到服务器。

来自分类Dev

iOS WebSocket无法使用SocketRocket连接到服务器

来自分类Dev

无法使用 XAMPP 连接到 Apache 服务器

来自分类Dev

无法使用 Laravel 5 连接到 Mysql 服务器

来自分类Dev

无法使用 php 连接到服务器

来自分类Dev

使用异步/等待模式执行服务器端调用(错误:TaskCanceledException)

来自分类Dev

无法连接到PostgreSQL服务器

来自分类Dev

无法连接到python服务器

来自分类Dev

Qt无法连接到服务器

来自分类Dev

NullPointerError:无法连接到服务器

来自分类Dev

mongodb无法连接到服务器

来自分类Dev

无法连接到RADIUS服务器

来自分类Dev

无法连接到MySQL服务器

来自分类Dev

无法连接到MQTT服务器

来自分类Dev

XMPPPY无法连接到服务器

来自分类Dev

无法连接到SMTP服务器

来自分类Dev

无法连接到noVNC服务器