Avatar billede morw Nybegynder
30. marts 2003 - 12:15 Der er 9 kommentarer og
1 løsning

Encoding af tegn under sockets

Hej

Jeg tænke lige på hvad men gør med tegn-encoding. Hvis folk med forskellig charset skriver sammen går det vel galt?

En anden ting? Hvordan sender man binære ting over en socket?
Avatar billede arne_v Ekspert
30. marts 2003 - 12:17 #1
Med sockets koder man det hele selv. D.v.s. at ens applikation
må konvertere mellem forskellige charsets.

Sockets sender faktisk binære data.
Avatar billede arne_v Ekspert
30. marts 2003 - 12:18 #2
For at bruge sockets til binære data skal man bare skifte fra
strxxx til memxxx for at undgå trunkering ved en nul byte.
Avatar billede arne_v Ekspert
30. marts 2003 - 12:20 #3
Hvis du sende binære integers (>1 byte) skal du også selv håndtere
endianess. Men her er der en konvention som siger at man normalt
bruger net-order (=big-endian).
Avatar billede morw Nybegynder
30. marts 2003 - 12:22 #4
strxxx til memxxx? Hvor er du lige henne?
Avatar billede morw Nybegynder
30. marts 2003 - 12:25 #5
Men hvis jeg sender æøå via send() så får jeg morten µ°Õ i telnet.
Avatar billede arne_v Ekspert
30. marts 2003 - 12:26 #6
sockets sender og receiver binære data fint d.v.s. at
de bare sender og receiver nul bytes ligesom alle andre
bytes.

Men når du skal have data ind og ud af buffere, så skal du bruge
memcpy/memcmp etc. i.s.f. strcpy/strcmp/strlen etc. fordi ellers
så får du trunkeret ved første nul byte.

Har sådan set slet ikke noget med sockets at gøre.
Avatar billede morw Nybegynder
30. marts 2003 - 12:28 #7
Nåå det var det du mente.
Avatar billede arne_v Ekspert
30. marts 2003 - 12:29 #8
Ja.

Du skriver formentlig dit program i et Windows program (alt fra Notepad
til MS VC++) som bruger Windows karakter-sæt.

Telnet kører du formentlig i et kommando-prompt vindue som bruger
DOS karakter-sæt.

Det er der ikke noget overraskende i.
Avatar billede arne_v Ekspert
30. marts 2003 - 12:30 #9
Jeg vil isge at det er det program der modtager som skal konvertere til DOS
karakter-sæt, hvis noget skal vises i et kommando-prompt vindue.

Hvis derimod du skriver de binære data til fil og åbner dem med et
Windows program, så bør de se OK ud uden konvertering.
Avatar billede morw Nybegynder
30. marts 2003 - 12:33 #10
ok - lige nu leger jeg blot lidt med sockets for at få en fornemmelse af det. Senere skal jeg ikke bruge telnet, men java til client og BSD(c++) til server.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester