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?
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
Hab mist erzählt 🙁 der Dienst startet nicht wenn man Sockets benutzt 😦( werde noch mit enterprise Services probieren.