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.
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.
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.
Tags und Links c c++ sockets networking network-programming