Avatar billede sixjac Nybegynder
09. februar 2003 - 23:09 Der er 4 kommentarer

Socket programmering sende en int ved at convertere den med htons

Jeg sidder og programmere noget socket i linux med kan ikke sende en længe på en streng. Jeg har fået at vide at at jeg skal lave den om med htons() når jeg sender og tilbage igen når jeg skal bruge den der hvor den er modtaget. Jeg skriver følgende når jeg sender:
x=strlen(text);
y=htons(x)+1;
send(sockfd, &y, 2, 0);
Og så convetere jeg det tilbage med ntohs() når jeg har modtaget det. Det virker ikke.

Håber at der er nogen der kan hjælpe !!!!
Avatar billede arne_v Ekspert
09. februar 2003 - 23:36 #1
char s[] = "bla bla";
short l = strlen(s);
short lno = htons(l);
send(sockfd,&lno,sizeof(short),0);
send(sockfd,s,l,0);

short lno;
short l;
char *s;
recv(sockfd,&lno,sizeof(short),0);
l=ntohs(lno);
s=malloc(l);
recv(sockfd,s,l,0);

bør virke !

(indtastet efter hukommelsen ikke testet)
Avatar billede arne_v Ekspert
09. februar 2003 - 23:39 #2
Jeg skal måske lige forklar hvad htons og ntohs gør.

De er:
  host order to net order short
  net order to host order short

Og de dækker over at nogle maskiner gemmer en short med værdier 1
som 0x01 0x00 mens andre gemmer dem som 0x00 0x01.

Net order er en specifik angivelse (den sidste form). Og ved at kalde
de 2 funktioner kan man sende en short fra et system som bruger den
ene konvention til et system som bruger den anden konvention uden
at der går ged i det.
Avatar billede arne_v Ekspert
09. februar 2003 - 23:45 #3
Det først kaldes iøvrigt little endian og bruges af
Intel x86, VAX, Alpha etc. mens det sidste kaldes big
endian og bruges af SPARC, IBM mainframe, Motorola 680x0 etc..
Avatar billede arne_v Ekspert
20. februar 2003 - 18:15 #4
sixjac>

Har du fået løst dit problem ?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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