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

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

1

28.09.2008, 12:08

Binäre zahlen im Netzwerk

Hallo

Ich wollte mal fragen ob es schlau ist, binäre Zahlen übers
Netztwerk zu senden.
Also es gibt ja bei windows "send(socke, buffer, size)" und
man kann ja einfach bei buffer eine zahl nach (char*) konvertiren:

C-/C++-Quelltext

1
2
3
4
5
// Die zu sendende Zahl:

int zahl = 1992;

// senden

send( s, reinterpret_cast<char*>(zahl), sizeof( zahl ));


jetzt ist aber die frage ob die Zahl auch wirklich so ankommt wenn
man sie mit recv wieder einfängt....
Ich meine eigentlich sollte ja der buffer beim senden nicht verändert werden,
aber vieleicht gibt es noch andere faktoren ?

mfg
DB

Anonymous

unregistriert

2

28.09.2008, 12:16

Kommt drauf an was du machen willst. Klar, Binär senden hat bei Games den Vorteil, da geringerer Overhead entsteht.

Für einen Int benötigst du ja nur 16 bis 32 Bit, also 2 bis 4 Byte. Sendest du einen String musst du für jede Stelle 1 Byte "opfern". Das macht bei Anwendungsprotokollen aus Sicht der Benutzerfreundlichkeit und leichteren Implementierbarkeit sehr viel sinn. Man denke nur an POP3 oder FTP, die man selbst noch mit Telnet steuern kann :)

Man kann es so machen, wie du es gerade machst, aber es kommt immer auf das Anwendungsgebiet an.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

28.09.2008, 12:19

Ich frage mich ernsthaft, wie die Daten sonst rüberkommen sollten, wenn nicht als Binärformat ;) . Das ist wie ein Stream. Was an einem Ende reingeht, kommt am anderen genauso wieder raus. Allerdings gibt es da einige Sachen zu beachten. Stichworte endianess, alignment. Aber warum willst du was eigens schreiben? Übungszwecke?

P.S: pardon, da habe ich was missverstanden :oops:
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.

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

4

28.09.2008, 12:34

Zitat von »"Nox"«

Aber warum willst du was eigens schreiben? Übungszwecke?


Hä wie was eigenes schreiben ? :D

Ich hab mir halt gedanken gemacht wegen dem Senden^^

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

28.09.2008, 13:29

Ich meine ob du dir eine eigene Netzwerklib schreiben willst, weil es doch sehr schnell sehr komplex werden kann und es schon viele fertige Lösungen für gibt. Die Stichworte sind aber dennoch interessant :)
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.

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

6

28.09.2008, 13:33

Re: Binäre zahlen im Netzwerk

Muss übrigens so sein, sonst bekommst du sehr wahrscheinlich ne Access Violaion:

C-/C++-Quelltext

1
2
3
4
5
// Die zu sendende Zahl:

int zahl = 1992;

// senden

send( s, reinterpret_cast<char*>(&zahl), sizeof( zahl ));
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

7

28.09.2008, 14:17

Re: Binäre zahlen im Netzwerk

Zitat von »"Helmut"«

Muss übrigens so sein, sonst bekommst du sehr wahrscheinlich ne Access Violaion:

C-/C++-Quelltext

1
2
3
4
5
// Die zu sendende Zahl:

int zahl = 1992;

// senden

send( s, reinterpret_cast<char*>(&zahl), sizeof( zahl ));


Ups ja das sollte man tatsächlich so machen ^^

Zitat

Ich meine ob du dir eine eigene Netzwerklib schreiben willst, weil es doch sehr schnell sehr komplex werden kann und es schon viele fertige Lösungen für gibt. Die Stichworte sind aber dennoch interessant


Tatsächlich hab ich eine kleine Netzwerk-engin geschrieben, obwohl
die nur die windsock2 wrappt :)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

28.09.2008, 17:16

Für die meisten Fälle ist man mit einer fertigen Netzwerklib ganz gut oder sogar besser beraten. Man glaubt garnicht, was man alles beachten muss.
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.

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

9

28.09.2008, 18:23

Welche kannst du denn da mal so empfehlen ?

Werbeanzeige