wie Sie unterscheiden können, wenn der Client TCP oder UDP von der Serverseite verwendet

8

Ich schreibe ein einfaches Client-Server-Programm.

Client sendet einige Nachrichten an den Server mit UDP oder TCP. Der Server muss sowohl UDP als auch TCP unterstützen können.

Wenn der Client eine Nachricht mit UDP sendet, ist die Reihenfolge der Methodenaufrufe im Client socket(),bind(),sendto(),recvfrom(),close() und im Server ist socket(),bind(),sendto(),recvfrom(),close() .

Wenn es TCP verwendet, Reihenfolge des Anrufs im Server ist %Code%. und das ist im Client   socket(),bind(),listen(),accept(),send(),recv(),close()

In meinem Programm wird dem Benutzer / Client am Anfang die Wahl überlassen, was er UDP oder TCP benutzen möchte. Also, mein Hauptproblem ist, wie kann ich auf der Serverseite wissen oder unterscheiden, wenn der Klient Nachricht unter Verwendung TCP oder UDP sendet. Wenn es TCP verwendet, muss ich listen (), accept (), send (), recv () aufrufen und wenn es UDP verwendet, rufe ich nicht listen (), accept () auf, sondern sendto () und recvfrom ().

Also, wie kann ich das am Anfang unterscheiden / wissen, damit ich entsprechende Funktionsaufrufe machen kann.

Danke.

    
seg.server.fault 18.09.2009, 14:41
quelle

3 Antworten

15

Bevor das Paket Sie erreicht, wissen Sie nicht, ob es UDP oder TCP ist.

Sie möchten also sowohl an UDP als auch an TCP sockets binden, wenn Sie Anfragen in beide Richtungen erwarten.

Sobald Sie das getan haben, wissen Sie einfach, wie es durch den Socket kam, durch den Sie das Paket erhalten haben.

    
Michael Krelin - hacker 18.09.2009, 14:47
quelle
5

Wenn Sie den Socket erstellen, übergeben Sie einen Typ - SOCK_STREAM (TCP) oder SOCK_DGRAM (UDP)

Also werden die zwei Arten von Verkehr auf zwei verschiedenen Sockets sein.

    
Henry Troup 18.09.2009 14:51
quelle
1

Lassen Sie einfach den TCP-Socket an Port X abhören und tun Sie die UDP-Verbindungen über Port Y

    
Toad 18.09.2009 14:44
quelle