Struct mit dynamischen Arrays über socket versenden
-
Hallo Leute,
habe folgendes Problem:
Ich möchte ein Paket mit dynamischer Größe über ein socket verschicken
und es auf der anderen Seite wieder lesen können. Ich habe mir das
folgendermaßen gedacht:struct Login_ShipList{ unsigned int code; unsigned int ErrorCode; unsigned int ShipCount; char Graphic[][50]; char Name[][50]; char Mesh[][50]; char Texture[][50]; unsigned int shieldSlotsTotal[] ; unsigned int cargo[] ; unsigned int basicMass[]; unsigned int basicSpeed[]; unsigned int LasterSlots[]; };In der Variablen ShipCount möchte ich angeben wieviel Elemente die
folgenden Arrays haben.
Also wenn ShipCount=2, sollten die Arrays Graphic,Name,Mesh usw.. auch 2
Elemente in der ersten Dimension haben.
Leider funktioniert das so nicht. Hat jemand eine Idee wie man das
Problem lösen kann? Oder funktioniert das nur mit einer fixen Anzahl von
Elementen, da sonst meine Paketgröße ja immer varriert?Das paket komm an ich kann auch auf ShipCount2 zugreifen. aber wenn ich auf ein element des Arrays zugreifen will ist es immer leer.
Vielen Dank im Voraus!
-
Du solltest vorher die Länge der gesamten Struktur als einzelnen Wert senden und jedes einzelne Array auch immer vorher mit Länge senden.
P.S: Dir ist bewußt, daß du mit "char Graphic[][50];" nur 50 Zeiger definiert hast???
-
~Th schrieb:
P.S: Dir ist bewußt, daß du mit "char Graphic[][50];" nur 50 Zeiger definiert hast???
keineswegs. damit wird ein 2dimensionales array unbestimmter größe deklariert. und da der typ eines memberobjekts bei der deklaration vollständig sein muss, ist diese deklaration schlicht illegal.
-
Ok, erstmal vielen Dank. Leider, weiß ich immernoch nicht wie ich weiter komm. Die arrays einzeln schicken naja, wenns garnicht anders geht. gibt es keine alternative?
wenn ich in der struktur die arrays ohne feste größe angebe. wie kann ich sie dann später festlegen? ich habe das problem, dass sich die größe meiner gesamten struktur nicht ändert.