async/awaitを使用して非同期サーバーで非常に単純なクライアントサーバーアプリケーションを作成しようとしています。ソリューションに2つのプロジェクトがあります。async/awaitを使用して非同期サーバーに接続できません
サーバーはコンソールアプリケーションです。サーバーコード:
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();
私は2日間を探していると私は助けることができる何かを発見していません。私は間違って何をしていますか?
ありがとうございました。
サーバーはおそらくすぐに終了します。メソッドシグニチャを 'static async Task Run()'にして、 'main'メソッドでその結果を待つようにしてください:' Run()。Wait(); ' –
@YacoubMassadこれは動作します。ありがとうございました。 – hinge