c# - sockets, Umgang mit mehreren clients

Ich habe den folgenden code, die ich umsetzen will, wie mein server. So wie ich das verstehe ist es async. und sollte es ermöglichen, verbindungen von mehreren clients...

public void Start()
{          
    TcpListener listener = new TcpListener(IPAddress.Any, 10250);
    listener.Start();
    Console.WriteLine("Listening...");

    while (true)
    {
        IAsyncResult res = listener.BeginAcceptTcpClient(HandleAsyncConnection, listener);
        connectionWaitHandle.WaitOne();
    }
}

private void HandleAsyncConnection(IAsyncResult res)
{
    TcpListener listener = (TcpListener)res.AsyncState;
    TcpClient client = listener.EndAcceptTcpClient(res);
    connectionWaitHandle.Set();

    StringBuilder sb = new StringBuilder();
    var data = new byte[client.ReceiveBufferSize];

    using (NetworkStream ns = client.GetStream())
    {             
        //Test reply
        Byte[] replyData = System.Text.Encoding.ASCII.GetBytes(DateTime.Now.ToString());
        ns.Write(replyData, 0, replyData.Length);
        ns.Flush();
        ns.Close();
    }

    client.Close();
}

Ich habe einen test app, die einfach feuert Anfragen an meinen server. Wie Sie sehen können, in den code der server antwortet mit Datum/Zeit. Die test-app sendet sagen wir 20 Anfragen, die sind einfach test-strings. Für jede dieser Anfragen es öffnet einen socket, sendet die Daten an meinen server und dann schließt den socket wieder.

Dies funktioniert gut mit einer test-app läuft. Jedoch wenn ich zwei test-apps, die zweite kann keine Verbindung zum server. Ich dachte, weil ich die Bearbeitung des Antrages async. und weil meine test-app öffnet sich, dann schließt den socket vor jedem Anruf, den ich verarbeiten könnte Anfragen von mehreren clients?

  • Ich habe einige Beispiel-code, der genau das tut, was Sie wollen, aber es ist auf meinem laptop. Ich poste heute Abend wenn ich mich daran erinnere und wenn jemand nicht bereits für Sie beantwortet. Sorry für die Verspätung.
  • Das wäre sehr gut, danke.
InformationsquelleAutor Remotec | 2011-04-21
Schreibe einen Kommentar