[C++/Alg] IRC Protocol Endiannes?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik heb een klein vraagje. Ik ben bezig met een klein multiplayer spelletje te maken in C++, gebruik makend van BSD socket API. Het draait nu op Linux en Windows.

De client verstuurd nu een struct met data over een zet, ik doe dit gewoon 'raw' versturen zonder informatie om te zetten in NBO (Network Byte Order). Ik werk met een AMD Athlon processor dus dat zou betekenen dat alles in Little Endian aan komt bij de server. Nu wil ik eigenlijk portable blijven dus dat zou betekenen dat ik alles om moet zetten in Network Byte Order, toch?
Maar ik vraag mij af of het wel nodig is ... als ik telnet naar een IRC server wordt de tekst die ik verstuur toch ook gewoon in Little Endian verstuurd? Zijn er dan ook NBO clients? Ik kan ze iig niet vinden. Betekend dit dat het hele verhaal van alles omzetten in NBO niet belangrijk genoeg is? En alles gewoon in Little Endian over het netwerk sturen zodat ik van al het gezeik af ben?

In Beej's Guide to Network Programming wordt ten zeerste aangeraden WEL alles te porten:
http://beej.us/guide/bgne.../bgnet.html#serialization

Ik kom er niet uit, is het zo belangrijk om portable te blijven?

Alvast bedankt,

Peter

Acties:
  • 0 Henk 'm!

  • Nvidiot
  • Registratie: Mei 2003
  • Laatst online: 03-06 16:38

Nvidiot

notepad!

Even uit m'n hoofd, maar volgens mij is IRC gebaseerd op het uitwisselen van ASCII teksten, en aangezien die in 1 byte passen heb je toch geen probleem met big vs little endian?

What a caterpillar calls the end, the rest of the world calls a butterfly. (Lao-Tze)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nvidiot schreef op woensdag 29 april 2009 @ 21:36:
Even uit m'n hoofd, maar volgens mij is IRC gebaseerd op het uitwisselen van ASCII teksten, en aangezien die in 1 byte passen heb je toch geen probleem met big vs little endian?
Net even in RFC gekeken. Klopt ja, dan heb je gelijk. Maar denk je dat ik mijn structs zou moeten vertalen naar NBO?

Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 18:08

CoolGamer

What is it? Dragons?

Verwijderd schreef op woensdag 29 april 2009 @ 21:40:
[...]
Net even in RFC gekeken. Klopt ja, dan heb je gelijk. Maar denk je dat ik mijn structs zou moeten vertalen naar NBO?
Als je het voor dat je het stuurt omzet naar ASCII heeft het weinig zin om je data op te slaan in andere endian dan je processor gebruikt.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
TheCoolGamer schreef op woensdag 29 april 2009 @ 21:49:
[...]

Als je het voor dat je het stuurt omzet naar ASCII heeft het weinig zin om je data op te slaan in andere endian dan je processor gebruikt.
Hoezo? Omzetten naar ASCII, neem aan dat je hiermee bedoeld omzetten naar paren van 1 byte? Dat wil toch niet zeggen dat dat je de byte order omgooid? Dus blijf je het probleem houden dat een Big Endian de data omgekeerd leest als het over het netwerk verstuurd wordt als Little Endian.

[ Voor 5% gewijzigd door Verwijderd op 29-04-2009 22:03 ]


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:35
Endianess is een probleem als je multibyte items over een lijn wilt sturen, dat is bij ASCII per definitie niet het geval daar alle 128 items gedefinieerd zijn in een enkele byte.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
farlane schreef op woensdag 29 april 2009 @ 22:53:
Endianess is een probleem als je multibyte items over een lijn wilt sturen, dat is bij ASCII per definitie niet het geval daar alle 128 items gedefinieerd zijn in een enkele byte.
Ja dat klopt, maar ben vergeten te vermelden dat het o.a. om integers gingen in de struct. Dus dan is het geen oplossing. Toch maar alles omzetten in NBO?

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:35
Verwijderd schreef op woensdag 29 april 2009 @ 23:00:
Ja dat klopt, maar ben vergeten te vermelden dat het o.a. om integers gingen in de struct. Dus dan is het geen oplossing. Toch maar alles omzetten in NBO?
Dan moet je die omzetten in de volgorde waarin IRC zegt dat ze moeten staan.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Je bent natuurlijk geheel vrij om je eigen applicatie data in little endian formaat over te sturen, als het maar duidelijk is in welk formaat het staat. Wel moet dan de ontvangende client ook little endian zijn, en anders moet je het even converteren. Dat lijkt me geen gekke oplossing, aangezien het grote merendeel van je clients toch little endian machines zijn. In 99% van de gevallen hoeft er dan aan beide kanten niets te gebeuren.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoijar schreef op woensdag 29 april 2009 @ 23:10:
Je bent natuurlijk geheel vrij om je eigen applicatie data in little endian formaat over te sturen, als het maar duidelijk is in welk formaat het staat. Wel moet dan de ontvangende client ook little endian zijn, en anders moet je het even converteren. Dat lijkt me geen gekke oplossing, aangezien het grote merendeel van je clients toch little endian machines zijn. In 99% van de gevallen hoeft er dan aan beide kanten niets te gebeuren.
Ja, dat leek mij ook een goede oplossing. Het gaat niet om iets heel belangrijks en dan kan het eigenlijk wel dacht ik.

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 22:05
Ik zie ik niet waarom je geen eigen protocol over IRC heen zou kunnen leggen. En als je gewoon specificeert dat multibyte waarden in little-endian worden verstuurd, kan iedereen zijn eigen implementatie maken. Niets mis mee, het is gewoon een afspraak. :)

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:35
Ah okay, ik had niet begrepen dat het niet over het IRC protocol zelf ging..

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1