Winsock: Austausch von double Werten

Ich möchte über die winsock API zwischen über TCP/IP einen double Wert austauschen. Die Funktionen recv und send sind grundlegend aber für bytes ausgelegt. Wie macht man das am geschicktesten?

Ich möchte über die winsock API zwischen über TCP/IP einen
double Wert austauschen. Die Funktionen recv und send sind
grundlegend aber für bytes ausgelegt. Wie macht man das am
geschicktesten?

Hallo,

entweder man sendet die entsprechende Anzahl bytes (erschwert die Fehlersuche) oder man sendet einen String (Double müsste 8 bytes lang sein, steht im Compilerhandbuch).

Gruss Reinhard

Hallo Fragewurm,

Ich möchte über die winsock API zwischen über TCP/IP einen
double Wert austauschen. Die Funktionen recv und send sind
grundlegend aber für bytes ausgelegt. Wie macht man das am
geschicktesten?

Das sollte man eigentlich sowieso nicht tun.

  1. TCP/IP verknüpft die unterschiedlichsten CPUs und betriebssysteme.
  2. Nicht alle verwenden die selbe IEEE-Codierung für double. Das ist je nachdem schon je nach verwendetem Compiler unterschiedlich.
  3. dann komt noch das kleine Problem mit big und little endian ins spiel.

Um sicher zu gehen sollte man die Zahl als Ziffernfolge versenden. Also mit sprintf() und dann den String versenden.

MfG Peter(TOO)

Um sicher zu gehen sollte man die Zahl als Ziffernfolge
versenden. Also mit sprintf() und dann den String versenden.

Man könnte auch ein standardisiertes System wie XDR verwenden, dass einem solche Spielereien abnimmt.