Avatar billede d34c0n Praktikant
02. juni 2006 - 04:29 Der er 5 kommentarer og
1 løsning

Problem ang. socket og null char

jeg har en underligt problem med at sende data til en server, da den kun reagerer på strenge som sluttes af med en null char.

problemet er at den ikke reagerer på det jeg sender til den. jeg har prøvet at sætte en '\0' , \'x0' og (char)NULL osv. i slutningen af min streng men stadig ingen respons.

det underlige her er at hvis jeg gør det samme i vb (visual basic) så virker det fint. eksempel: "Hej med dig" + Chr(0)

Nogen ideer/forslag??????
Avatar billede arne_v Ekspert
02. juni 2006 - 04:38 #1
er du opmærksom på at nul byte er terminator for C char array strenge ?

// '\0' sidst i buf
send(s, buf, strlen(buf), 0);

virker ikke fordi strlen ikke tæller den nul byte fordi den tror at det er
terminator nul
Avatar billede d34c0n Praktikant
02. juni 2006 - 04:59 #2
dumme mig :) jeg vidste faktisk godt strlen() tager '\0' som terminato..
problem løst ved brug af sizeof()

lav lige svar.
Avatar billede arne_v Ekspert
02. juni 2006 - 05:09 #3
gerne
Avatar billede arne_v Ekspert
02. juni 2006 - 05:10 #4
måske bør du have en variabel med faktisk længde - just in case hele bufferen
ikke skal bruges og sizeof derfor er for stor
Avatar billede d34c0n Praktikant
02. juni 2006 - 06:33 #5
ok men de går jo ikke med strlen() så skal jeg jo loope hver char gennem i min buffer for at tjekke længden?
Avatar billede arne_v Ekspert
02. juni 2006 - 13:36 #6
jeg tror at man som oftest holder styr på længden

d.v.s. tæller den op med hvor mange bytes man ved er i bufferen

læs 17 bytes fra fil så er len=17

tilføj nul byte så er len=18
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