Laden...

Windows dienst als socketserver

Erstellt von qwert_a vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.587 Views
qwert_a Themenstarter:in
57 Beiträge seit 2005
vor 18 Jahren
Windows dienst als socketserver

Hi, All!
Ich muss ein Dienst schreiben der als Socket-Server läuft. dabei bin ich an folgendes Problem angestossen:
Alles funktioniert prima bis auf Tatsache das Dienst lässt sich nicht laufen. Nach einige Zeit, nachdem ich der Dienst starte sagt sie:
"Fehler 1053 der Dienst antwortete nicht rechtzeitig...."

Hier ist der Code für ein synchron Socket Server aus MSDN, der meine Meinung nach Probleme macht:

Socket handler = listener.Accept();

Wie konnte man das umgehen?

F
529 Beiträge seit 2003
vor 18 Jahren

Hallo, du kannst auch einen Socket auf eine neue Verbindung warten lassen. Das geht laut MSDN so:


// create the socket
    Socket listenSocket = new Socket(AddressFamily.InterNetwork, 
                                     SocketType.Stream,
                                     ProtocolType.Tcp);

    // bind the listening socket to the port
IPAddress hostIP = (Dns.Resolve(IPAddress.Any.ToString())).AddressList[0];
    IPEndPoint ep = new IPEndPoint(hostIP, port);
    listenSocket.Bind(ep); 

    // start listening
    listenSocket.Listen(backlog);


Probier das halt mal. Vielleicht klappts ja, aber ich wüsste nicht, warum ein Dienst im Zusammenhang mit einem TCPListener Probleme bereitet. Villeicht liegt das Problem auch andernweilig. Vielleicht kann der Dienst nicht mehr reagierern, wenn er auf eine neue Verbindung wartet? Ich weiß es nicht.

Wenn das oben nicht klappt, kannst du ja asyncron auf eine neue Verbindung warten.
Lies dir am besten mal das hier durch:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetsocketssocketclassbeginaccepttopic.asp

Besuchen sie das VisualC++ - Forum

qwert_a Themenstarter:in
57 Beiträge seit 2005
vor 18 Jahren

Vielen vielen Dank!! mit asyncronem Socket hat es funktioniert

qwert_a Themenstarter:in
57 Beiträge seit 2005
vor 18 Jahren

Hab mist erzählt 🙁 der Dienst startet nicht wenn man Sockets benutzt 😦( werde noch mit enterprise Services probieren.