Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

31

16.01.2010, 19:57

Send will const char* für den Puffer. Das muss dich aber nicht abhalten andere Datentypen zu versenden.

Nexxtron

Alter Hase

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

32

16.01.2010, 20:00

ahhh...hab ich ja ganz überlesen die kleine stelle in msdn, also das heißt dass ich auch floats oder ints übergebn kann?
New Project: Operation CityRacer

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

33

16.01.2010, 20:30

Du musst casten:

C-/C++-Quelltext

1
send( socket, ( const char* )&xpos, ... )

Nexxtron

Alter Hase

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

34

16.01.2010, 22:19

und wenn ich die daten empfang dann kann ich sie wieder in z.b. float umcasten?
New Project: Operation CityRacer

35

16.01.2010, 22:21

Einfach wieder nach float casten

C-/C++-Quelltext

1
2
3
char* empfangenes;

float* floatempfangenes = (float*) empfangenes;

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

36

16.01.2010, 23:04

Nur wenn du es gescheit machen willst, solltest du eine Bufferklasse nehmen. Ich mache es z.B. so: http://syncsys.svn.sourceforge.net/svnroot/syncsys/include/NetworkBuffer.h
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Nexxtron

Alter Hase

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

37

17.01.2010, 15:25

kleine frage noch:

wenn ich jetzt z.b. ne tbVector3 klasse mach kann ich die dann einmal mit send verschicken oder muss ich jeden einzelnen wert also x,y,z über send verschicken, also dreimal send(...) aufrufen? oder wie caste ich z.b meine tbvector3 klasse um....( operator (char) überladen und dann? )
New Project: Operation CityRacer

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

38

17.01.2010, 15:29

du castest nicht die klasse sondern den zeiger.
send brauch nur die anfangsadresse und die größe der hintereinander liegenden daten. du kannst also auch ganze arrays verschicken wenn du die größe in byte mit übergibst.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

39

17.01.2010, 17:24

Zitat von »"Nexxtron"«

kleine frage noch:

wenn ich jetzt z.b. ne tbVector3 klasse mach kann ich die dann einmal mit send verschicken oder muss ich jeden einzelnen wert also x,y,z über send verschicken, also dreimal send(...) aufrufen? oder wie caste ich z.b meine tbvector3 klasse um....( operator (char) überladen und dann? )


Du kannst das genau wie oben machen. Allerdings würde ich dir davon abraten und die Komponenten einzeln schicken. Das lässt sich ja wunderbar polymorph umsetzen, so dass die Verwendbarkeit nich leidet. ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

40

17.01.2010, 18:17

Wirf doch einfach mal einen Blick in die Datei, die ich gepostet habe. Damit geht was wunderbar, wobei es zwei dinge zu beachten gibt:
-Niemals Zeiger übers netzwerk schicken (Ausnahme: nur dann wenn man ganz genau weiß was man tut)
-Komplexere Datentypen nicht einfach auf nen Zeiger casten und dann 1:1 in eine Stream kopieren. Das kann zu hässlichen Effekten führen (vgl. memset(class_ptr, 0, sizeof(classtype)); bzw ZeroMemory(class_ptr) )
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige