Sockets / Plattformübergreifend?
-
Moin!
Ich hab ein paar Fragen zu den Windows Sockets:
- Kann ich mich darauf verlassen, dass etwas das ich als ganzes per send ge-
schickt habe, auch als ganzes von recv empfangen wird? - Wie schnell ist das senden per Async-Sockets? Würde man es schaffen, davon
tausende in der Sekunde zu senden? - Es heißt UDP könnte Packete verlieren. Wie hoch ist dieses Risiko?
- Wie sieht es mit der Plattformunabhängigkeit aus? Gibt es unter Linux und
Mac ähnliche Bibiotheken mit gleichen Funktionsdeklarationen? Oder sollte man
da gleich eine andere Bibliothek verwenden? Wenn ja, welche?
Vielleicht kann mir ja der eine oder andere da weiterhelfen

- Kann ich mich darauf verlassen, dass etwas das ich als ganzes per send ge-
-
auf http://www.c-worker.ch/ werden so ziemlich alle deine fragen beantwortet.
schau dir mal mavericks tipps oder so an.1.) auch compiler einstellungssache stichwort "padding bytes" von structs
-
Kann ich mich darauf verlassen, dass etwas das ich als ganzes per send ge-
schickt habe, auch als ganzes von recv empfangen wird?nein
-
EnERgYzEr schrieb:
- Es heißt UDP könnte Packete verlieren. Wie hoch ist dieses Risiko?
Das hängt stark von der Qualität und Auslastung der Verbindung ab, man kann es also nicht vorhersagen.
Es kann gut passieren, dass einige Pakete verloren gehen; dein Protokoll muss auf jeden Fall dafür vorbereitet sein.
-
cd9000 schrieb:
EnERgYzEr schrieb:
- Es heißt UDP könnte Packete verlieren. Wie hoch ist dieses Risiko?
Das hängt stark von der Qualität und Auslastung der Verbindung ab, man kann es also nicht vorhersagen.
Es kann gut passieren, dass einige Pakete verloren gehen; dein Protokoll muss auf jeden Fall dafür vorbereitet sein.
Kannst du evtl. eine grobe Einschätzung geben? Also bei einer normalen Inet-
Verbingung zu einem deutschen Server. 50%? 1%? 0.001%? Bei meinem gewünschten
Anwendungsgebiet wäre es nicht all zu schlimm, wenn einige Pakete verloren
gehen würden, aber es sollten auch nicht die Hälfte aller Pakete sein
-
Das kann man nicht abschätzen

UDP ist genau so sicher wie TCP, bloß dass bei TCP die verlorene Packete nachgesendet werden können, bei UDP nicht. Ich hab gehört, dass die übliche Fehlerrate bei der Datnübertragung im Internet zw 10E-6 bis 10E-12 liegt.
Kannst du dir ausrechnen wieviel Daten du versendest und wieviel davon fehlerhaft sein können.
Man muss halt entscheiden was dein Vorhaben für Anforderungen hat. Wenn du z.B. Sprache überträgst ist das nicht so wichtig, wenn irgendwo mal ein Byte verloren geht, wenn du aber verschlüsselte Information überträgst ist das natürlich wichtig, dass die Zahl der versendeten Bytes mit der der empfangenen übereinstimmt