Windows Service c# server TCP/IP

0

Cześć,
Próbuję napisać windows service w VS2013 który będzie realizował funkcję servera tcp jednak bezskutecznie. Problem polega na tym, że mam już napisany taki server w c#, ale kiedy chcę go uruchomić jako windows services nie zabardzo wiem jak to zrobić. Ogólnie server ma odbierać informację z telefonu(Android) - klient napisany w Javie. Jeśli chodzi o instalację i uruchamianie windows serwice'ów to wszystko umiem.

namespace ServerTCP
{
class Program
{

    static void Main(string[] args)
    {
           
        TcpListener listener = new TcpListener(IPAdress.Any,1071);
        listener.Start();
        Socket soc;
        while (true)
        {
            soc = listener.AcceptSocket();    // <<<<<<<<<<<< próbowałem całą funkcję wrzucić w funkcję OnStart w windows service ale wtedy przy kompilacji wykrzacza się w tym miejscu i nie mam pomysłu jak to rozwiązać.
            Console.WriteLine("Connection accepted from " + soc.RemoteEndPoint);

            byte[] b = new byte[15];
            int k = soc.Receive(b);
           // Console.WriteLine(Convert.ToChar(b[0]));
            char znak = Convert.ToChar(b[0]);
            if (znak == '1')
            {
                SendKeys.SendWait("1");
            }

        }
        soc.Close();
    }
}

}

Jeśli ktoś umiałby to zamienić na windows service to byłoby świetnie, albo podpowiedzieć jak to zrobić?
Ogólnie: Windows 7, Visual Studio 2013

0

Pokaż kod Windows service i błąd jaki dostajesz.
Napisz logikę serwera w osobnej klasie - nie myśl o tym czy będzie to aplikacja konsolowa, win forms, czy windows service.
Potem stwórz obiekt swojej klasy tam gdzie chcesz i wywołaj metodę startującą - w Twoim przypadku będzie to OnStart w windows service

0

namespace WindowsServiceDzialajacy
{
class server
{
public TcpListener listener;
public Socket soc;

    //Constructor
    public server()
    {
        listener = new TcpListener(IPAddress.Any, 1090);
    }
    
    public void serverStart()
    {
        listener.Start();
        
        while (true)
        {
            soc = listener.AcceptSocket();//  już sprawdziłem że ta funkcja powoduje niemożliwość uruchomienia usługi. Tzn uruchomienie trwa długo a na koniec pokazuje się informacja o przekroczeniu limitu czasu.


            byte[] b = new byte[15];
            int k = soc.Receive(b);

            char znak = Convert.ToChar(b[0]);
            if (znak == '1')
            {
                SendKeys.SendWait("1");
            }
            if (znak == '2')
            {
                SendKeys.SendWait("2");
            }
            if (znak == '3')
            {
                SendKeys.SendWait("3");
            }
            if (znak == '4')
            {
                SendKeys.SendWait("4");
            }

        }
        soc.Close();
    }
}

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1