UDP -Server sind für die Verwendung als gleichzeitige Server hauptsächlich aufgrund ihrer
verbindungslosen unpraktisch. Natur. Diese mangelnde Verbindung bedeutet, dass:
* Keine inhärente Verbindungsverfolgung: Im Gegensatz zu TCP stellt UDP keine anhaltende Verbindung zwischen Client und Server her. Jedes UDP -Paket wird unabhängig behandelt. Dies bedeutet, dass der Server keine inhärente Möglichkeit hat, zu verfolgen, welche Pakete zu welchem Client gehören, und es schwierig macht, mehrere gleichzeitige Clients effektiv zu verwalten. Sie müssen Ihre eigenen Mechanismen implementieren (z. B. das Hinzufügen von Client -IDs zu jedem Paket), um mehrere Clients gleichzeitig zu verarbeiten, wodurch das Design des Servers Komplexität verleiht.
* Keine zuverlässige Lieferung: UDP garantiert keine Lieferung oder Reihenfolge der Pakete. Pakete können verloren, dupliziert oder nicht in Ordnung kommen. Ein gleichzeitiger Server, der mehrere Clients bearbeitet, muss diese Möglichkeiten berücksichtigen und zusätzliche Mechanismen wie Übermittlung und Sequenzierung erfordern, um die Datenintegrität und -reihenfolge sicherzustellen. Dies fügt erhebliche Gemeinkosten und Komplexität hinzu.
* Keine Flussregelung: UDP hat keine integrierte Flusssteuerung. Ein schneller Client kann einen langsameren Server mit Paketen überwältigen, was zu Pufferüberläufen und Datenverlust führt. Der Server muss seine eigenen Durchflusssteuerungsmechanismen implementieren.
* erhöhte Komplexität beim Umgang mit Kundenunterbrechungen: Da es keinen expliziten Verbindungsabschluss gibt, erfordert die Erkennung, wenn ein Kunde getrennt hat, ausgefeiltere Techniken, als einfach eine geschlossene TCP -Steckdose zu überwachen. Der Server muss Timeouts und andere Mechanismen implementieren, um Clients zu erkennen, die das Senden von Daten nicht mehr haben.
Im Gegensatz dazu vereinfacht die verbindungsorientierte Natur von TCP das gleichzeitige Serverdesign durch die Bereitstellung integrierter Mechanismen für Verbindungsverfolgung, zuverlässige Lieferung, Durchflussregelung und Verbindungsverschluss. Diese Funktionen machen das Management mehrerer Kunden viel einfacher und effizienter als mit UDP. Während UDP für gleichzeitige Server * verwendet werden kann, ist es erheblich weniger effizient und erfordert wesentlich komplexere Programme, um das gleiche Maß an Zuverlässigkeit und Verwaltbarkeit wie ein TCP -Server zu erreichen.