c# Dienst zu hören, ein Hafen

Ich glaube, was ich bin auf der Suche zu erstellen, ist ein Dienst, der lauscht an einem bestimmten port, und, wenn Daten an diesen port sendet es ab, dass Daten an ein anderes script für die Verarbeitung.

Für einige Grund aber, den Dienst mal aus, wenn ich versuche, es zu starten. Meine logs sagt mir TcpClient client = server.AcceptTcpClient(); ist, wo ist es zu stoppen (eigentlich ist es immer fest auf 'Start' in Services).

Da ich keine Erfahrung mit C#, die Dienstleistungen oder arbeiten mit Servern in dieser Art und Weise, der code ist ziemlich genau das, was ich online gefunden.

OnStart-Methode sieht wie folgt aus.

    protected override void OnStart(string[] args)
    {
        try
        {
            TcpListener server = null;
            //Set the TcpListener on port 13000.
            Int32 port = 1234;
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");

            //TcpListener server = new TcpListener(port);
            server = new TcpListener(localAddr, port);

            //Start listening for client requests.
            server.Start();

            //Buffer for reading data
            Byte[] bytes = new Byte[256];
            String data = null;

            //Enter the listening loop.
            while (true)
            {
                //Perform a blocking call to accept requests.
                //You could also user server.AcceptSocket() here.
                TcpClient client = server.AcceptTcpClient();

                data = null;

                //Get a stream object for reading and writing
                NetworkStream stream = client.GetStream();

                int i;

                //Loop to receive all the data sent by the client.
                while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                {
                    //Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);

                    //Process the data sent by the client.
                    data = data.ToUpper();

                    byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

                    //Send back a response.
                    stream.Write(msg, 0, msg.Length);
                }

                //Shutdown and end connection
                client.Close();
            }
        }
        catch (SocketException e)
        {
        }
        finally
        {
        }
    }
  • Ich nehme an, du meinst einen Windows-Dienst. Was macht Ihr OnStart() Methode Aussehen?
  • Tipp: Eine einfache Möglichkeit, um Windows-Dienste (und testen) ist die Verwendung von TopShelf - auf Nuget. Es gibt Ihnen eine einfache exe-Datei, die Sie ausführen können, auf Befehl, oder können Sie installieren und als Dienst ausgeführt.
InformationsquelleAutor dabuda | 2015-10-09
Schreibe einen Kommentar