Ich möchte eine Struktur von meinem Client-Programm an ein Server-Programm senden (ich schreibe sowohl die Server-und die Client-Programme). Wenn es wichtig ist, schreibe ich auch auf einem 32-Bit-Betriebssystem Linux, und sowohl der Client als auch der Server werden auf denselben Systemen ausgeführt. Hier ist meine Struktur:Client-Server-Kommunikation über Sockets
struct msg_to_server {
int type_of_msg;
int type;
int flag;
int pid;
char name[MAX_WORD];
char client_name[MAX_WORD];
int child_timeout;
int numberKilled;
};
Ich weiß, dass, wenn ich ein int sende ich brauche htonl zu verwenden (int) die unsigned int vom Host-Byte-Reihenfolge zu konvertieren Byte-Reihenfolge zu vernetzen, aber was soll ich tun, falls einer Struktur? Jede Hilfe würde sehr geschätzt werden.
Diese Lösung kann zerbrechlich sein, auch wenn Sender und Empfänger die gleiche Hardware und dasselbe Betriebssystem sind: z.B.Wenn das sendende Programm mit anderen Compilereinstellungen kompiliert wurde als das empfangende Programm, dann könnte dieselbe Struktur auf den beiden Systemen ein anderes Speicherlayout haben, so dass die Bytes auf dem Empfänger unterschiedlich interpretiert werden. –
Ja, deshalb habe ich "mindestens" gesagt. Beim Senden von Daten zwischen zwei Computern müssen viele mögliche Probleme berücksichtigt werden. Es ist jedoch ziemlich einfach in einer kontrollierten Umgebung zu lösen. –
Danke euch beiden. Das sind hilfreiche Kommentare. Das wusste ich nicht. –