Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Enviando union/struct via TCP IP

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Enviando union/struct via TCP IP

    Olá! Boa tarde a todos!

    Estou desenvolvendo um programa Cliente/Servidor que deve enviar 7 valores booleanos do Servidor para o Cliente.
    Esses dados estão alocados em uma struct:

    *** No Servidor ***

    struct movimentos{
    bool Frente;
    bool Esquerda;
    bool Direita;
    bool Parado;
    bool PassoDireita;
    bool PassoEsquerda;
    }m;


    E utilizo uma união que inclui esses dados e identifica o tamanho da estrutura:

    union dados{
    movimentos m;
    char tamanho [(sizeof movimentos)];
    }uniao;


    E depois eu uso a função send enviando o endereço da estrutura para o cliente, assim como o seu tamanho:

    send(winsock, uniao.tamanho, sizeof(uniao.tamanho), 0);(Está certo ou eu deveria fazer de outro modo?)

    *** No Cliente ***

    Eu tenho a mesma estrutura que deve receber os valores presentes no endereço da estrutura assada pela função send no servidor:

    struct movimentos{
    bool Frente;
    bool Esquerda;
    bool Direita;
    bool Parado;
    bool PassoDireita;
    bool PassoEsquerda;
    }m;


    Que também possui uma união: (Ou aqui ela não precise existir?)

    union dados{
    movimentos m;
    char tamanho [(sizeof movimentos)];
    }uniao;


    E recebo (ou acho que recebo né, posso estar fazendo errado) esses dados com a função recv:

    recv(winsock,uniao.tamanho,sizeof(uniao.tamanho),0 );

    O que eu não consigo fazer é receber os dados booleanos enviados pelo Servidor e utilizá-los no Cliente.

    Gostaria de saber se estou fazendo tudo errado ou esse é o caminho?

    Fui instruída a passar os dados dessa forma, com um struct que possui os dados e uma union que engloba a struct e seu tamanho.

    Mas fico em dúvida sobre o que passar no segundo argumento da função send, ou o que eu estou passando está correto?

    Socorro!

    =)

    Obrigada!
X
Working...
X