Estruturas em TCP

1. Estruturas em TCP

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 08/06/2006 - 08:41h

Tem como mandar uma estrutura usando sockets em C? Se alguem souber, por favor me explique.

Agradeço desde já,
Slackware_10


  


2. malloc

Mário Melo Filho
MasterSavage

(usa Slackware)

Enviado em 20/06/2006 - 18:25h

Você poderia criar uma área de memória com malloc, utilizando o tamanho da estrutura que vc quer passar e um ponteiro para a estrutura. Isso criaria uma area de memoria (buffer) que você pode enviar via BSD sockets.
Aqui devo frisar que você não esta passando a estrutura propriamente dita, mas apenas uma sequência de bytes, que o programa na outra ponta deve "entender" como uma estrutura igual a que foi enviada.
O que vc precisa é criar um protocolo para a aplicaçào para transmitir os dados de forma consistente e recupera-los em uma estrutura igual (com tipos básicos isso é fácil, com estruturas você precisaria , no mínimo, utilizar minha sugestão do malloc).
Imagino um problema em passar estruturas de forma arbitraria, quando ela tiver campos com ponteiros para outros dados ou para outras estruturas. Neste caso, na recepção, os endereços seriam inválidos.
Resumindo: Passar uma estrutura C não é possivel pela sua própria natureza, ela so existe como uma estrutura do C.


3. Re: Estruturas em TCP

Tiago Barcellos Peczenyj
pacman

(usa Ubuntu)

Enviado em 20/06/2006 - 19:55h

podes gerar um XML ;-)


4. serialização

Ricardo Rodrigues Lucca
jllucca

(usa Gentoo)

Enviado em 21/06/2006 - 13:39h

Olá,

o que voce tem que fazer é uma forma de serialização(do inglês "serialization"), isto é, decompor dados especificos de forma que se tu enviar para uma arquitetura diferente da sua os dados sejam entendidos corretamente.
O que foi falado sobre o sistema enviar como uma string os dados é uma grande dor de cabeça quando o sistema são de arquiteturas diferentes. Imagine que voce envia dados de uma arquitetura "little-endian" para uma "big-endian", o fato de voce receber os dados como string não permite voce notar que a informação chegada precisa ser corrigida para ser a mesma informação.

Procure na internet mais informações :)

[]'s



5. Serialização

Mário Melo Filho
MasterSavage

(usa Slackware)

Enviado em 21/06/2006 - 15:57h

Boa resposta,

Serialização é o nome que eu não utilizei, mas era o que eu queria dizer :). Serializar é nada mais que utilizar um protocolo para a aplicação, tanto o servidor quando o cliente devem utiliza-la.
Quando a arquitetura, há funçòes para converção de little-endian para big-endian, mas serializar é a melhor opção.



6. Re: Estruturas em TCP

Ronie
ronie

(usa Ubuntu)

Enviado em 31/07/2006 - 13:15h

Gente estou com a mesma duvida, e acredito que que alem das esplicações e links, vocês poderiam postar treços de codigo também, a ajuda seria maior.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts