empfangen Sie Daten aus dem Puffer bei der Socket-Programmierung

583
m-tech

bitte sehen Sie dieses Bild. recvfrom () blockt, bis ein Datagramm von einem Client empfangen wird. Da keine Verbindung besteht, kann jedes Datagramm von einem anderen Absender stammen.

Ich kann Datenempfänger empfangen, weiß aber nicht, wie der Server herausfinden kann, welche Daten für welchen Client bestimmt sind. weil es möglich ist, 8.8.8.8 client send 3 datagram und server müssen data.do sortieren Server bestimmte Puffer für jeden Client zuordnen?

0
Willkommen bei Super User! Sie stellen eine Off-Topic-Frage. Bitte lesen Sie [On-Topic] (http://superuser.com/help/on-topic), [Wie stelle ich eine gute Frage?] (Http://superuser.com/help/how-to-ask) und [Welche Arten von Fragen sollte ich vermeiden?] (http://superuser.com/help/dont-ask). DavidPostill vor 8 Jahren 0

1 Antwort auf die Frage

1
David Schwartz

Die beste Option besteht darin, das Protokoll so zu entwerfen, dass die Nachricht eine Art Quellkennung enthält. Andernfalls können Sie die Quell-IP-Adresse und den -Port verwenden, um den Client zu ermitteln. Dies kann jedoch bei einer Änderung der IP-Adresse des Clients zu einem Fehler führen.

Lieber David, wenn Linux einen Puffer für jeden Prozess zuweist, denke ich, dass wir kein Problem haben. Aber wenn wir einen Puffer haben, ist alles schwierig. Ich möchte jeden Client erkennen. Was ist Ihre Idee? ?????? m-tech vor 8 Jahren 0
@m-tech Ich habe zwei Ideen vorgeschlagen. Erstens: Der Client sollte eine Art Kennung in das Datagramm aufnehmen. Zweitens: Identifizieren Sie den Client anhand der Quell-IP-Adresse und des Quellports des Datagramms. David Schwartz vor 8 Jahren 0