wie zu unterscheiden, wenn der client über TCP oder UDP server-Seite

Bin ich mit dem schreiben von einfachen client-server-Programm.

Client-senden Sie einige Nachrichten an server über UDP oder TCP. Server müssen in der Lage sein, um unterstützen sowohl UDP-und TCP.

Wenn client sendet Nachricht, die UDP verwenden, die Reihenfolge der Methodenaufrufe im client ist socket(),bind(),sendto(),recvfrom(),close() und im server ist socket(),bind(),sendto(),recvfrom(),close().

Wenn es verwendet TCP,
Folge von call-in-server
socket(),bind(),listen(),accept(),send(),recv(),close().
und dass im client ist
socket(),bind(),connect(),send(),recv(),close()

In meinem Programm, Benutzer/Kunde wird in der Wahl-beginnen Sie, zu wählen, was er verwenden möchten, UDP oder TCP. Also, mein Hauptproblem ist, wie kann ich wissen oder unterscheiden sich in der Seite des Servers, wenn der client das senden der Mitteilung unter Verwendung von TCP oder UDP. Wenn es verwendet TCP, die ich aufrufen muss listen(),accept(),send(),recv()
und wenn es verwendet UDP, ich rufe nicht zu hören(),accept (), aber Aufruf sendto() und recvfrom().

So, wie kann ich unterscheiden/wissen das am Anfang so dass ich die entsprechende Funktion Aufrufe.

Dank.

  • Also, sollte ich zwei sockets auf der server-Seite, eine für UDP und eine für TCP ?
  • seg.server.Fehler, ja.
  • Ich würde empfehlen, nicht aufrufen bind() in Ihrem client-code. Es ist zwar technisch möglich (und erforderlich in sehr spezifischen Situationen), ist das Standardverhalten ohne client-Seite bind() ist in der Regel, was Sie wollen auf der Anwendungsebene. Auch halten Sie im Verstand, die Sie anrufen können connect() auf einem UDP-socket. Es macht keinen Handshake, aber es bedeutet, dass Sie verwenden können send/recv statt sendto/recvfrom, die bis Ende Mai machen die client-Logik einfacher.
Schreibe einen Kommentar