2016-05-09 9 views
0

Ich schreibe eingebetteten Webserver, der nur 4 Hardware-Sockets hat. Manchmal wird Chrome, das ich zum Testen verwende, für angeforderte Ressourcen in den Zustand "Verbindung abgelehnt" versetzt, weil es versucht, mehr als 4 Sockets gleichzeitig zu verbinden. Gibt es eine Möglichkeit, dem Client mitzuteilen (z. B. über den HTTP-Antwortheader), wie viele Sockets der Server verarbeiten kann und/oder wie viele freie Sockets das Gerät derzeit hat?Kontrollnummer der Verbindungen auf Serverseite

bearbeitet: Ich habe gerade erfahren, dass ich Anschluss: schließen HTTP-Header aus Gründen der Einfachheit kann jedoch Verbindung verwenden: Keep-Alive- mehr HTTP-Anforderung durch einzelne Verbindung zu ermöglichen. Ich bin mir nicht sicher, wie es sich auf das oben beschriebene Problem auswirken könnte, aber was mich davor schreckt, dass eine solche "keep-alive" persistente Verbindung innerhalb einer Minute aussetzt => Socket ist für diese Zeit vollständig gesperrt, während es "geschlossen" ist Freigegeben sofort nach dem Datenaustausch.

+0

Was ist ein "Hardware-Socket"? – EJP

+0

Hardware-Socket ist eine API-Einheit, die von der Hardware bereitgestellt wird und den Datenaustausch ermöglicht. Die Anzahl der Sockets ist tatsächlich durch die Größe der RAM-Puffer definiert, in meinem Fall - 2 kByte pro Socket (16 kBytes für RX und TX für alle 4 Sockets). Ich kann den Chip nicht neu konfigurieren, um mehr als 4 Sockets zu haben, weil es Hardware-Beschränkung ist. – Anonymous

Antwort

1

'Verbindung abgelehnt' sagt ihm das. Sie können dem Client nach einem Fehler nichts senden, da keine Verbindung zum Senden vorhanden ist. Sie könnten eine spezielle HTTP-Anfrage erstellen, um ihm mitzuteilen, wie viele freie Sockets es derzeit gibt, aber diese Anfrage würde einen freien Socket verbrauchen. Ich würde es nicht tun.

+0

Sie haben das Worst-Case-Szenario beschrieben. Stellen Sie sich jedoch vor, dass der Webserver inaktiv ist und der Client (z. B. Chrome) beginnt, den Inhalt der Webseite zu laden. Auf der ersten Anfrage kann der Server möglicherweise auf den Client antworten: "Ich habe nur 4 Sockets und derzeit sind nur 3 frei", und dann wird Chrome daran denken, nicht mehr als 3 oder 4 gleichzeitige Verbindungen zu erstellen. – Anonymous

Verwandte Themen