Ir para conteúdo
Fórum Script Brasil
  • 0

Socket em C lendo de um cliente Socket em Java


Fábio Lanza

Pergunta

Pessoal, preciso entregar um trabalho amanhã na universidade, o trabalho em sí é muito maior do que esta passagem, pensei que não teria problemas, mas não está funcionando...

Eu tenho um cliente e um servidor em Java, no meio desta comunicação, eu preciso colocar um "man-in-the-middle" em C...

Para isso estou usando o seguinte código:

Em C:

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <resolv.h>

#define PORT            31111
#define MAXBUF         1000

#define PORTC           41111
#define SERVER_ADDR     "127.0.0.1"

int main(int argc, char **argv){
    int s, client_s, len, port;
    struct sockaddr_in self;
    struct sockaddr_in client;
    int addrlen = sizeof(client);


    char msg_write[MAXBUF];
    char msg_read[MAXBUF];


    port = PORT;
    if (argc == 2) {
        port = atoi(argv[1]);
    }


/*---Open socket for streaming---*/

    if ( (s = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
        perror("Socket");
        exit(errno);
    }

/*---Initialize server address/port struct---*/

    bzero(&self, sizeof(self));
    self.sin_family = AF_INET;
    self.sin_port = htons(port);
    self.sin_addr.s_addr = INADDR_ANY;


/*---Assign a port number to the socket---*/

    if ( bind(s, (struct sockaddr*)&self, sizeof(self)) != 0 ) {
        perror("socket--bind");
        exit(errno);
    }


/*---Make it a "listening socket"---*/

    if ( listen(s, 1) != 0 ) {
        perror("socket--listen");
        exit(errno);
    }



/*---accept a connection ---*/

    printf ("Server C accpeting connections!\n");
    client_s = accept(s, (struct sockaddr*)&client, &addrlen);
    printf ("%s:%d connected\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));



    read (client_s, msg_read, MAXBUF);
    len = strlen(msg_read) - 1;
    if (msg_read[len] == '\n'){
        msg_read[len] = '';
    }

    printf ("Mensagem do cliente: %d\n", msg_read);





//envia mensagem recebida ao servidor em java

    int sC, n, buflen, server_port;
    struct sockaddr_in dest;
    msg_write[MAXBUF];
    char server_addr[50];


    server_port = PORTC;
    strcpy (server_addr, SERVER_ADDR);


/*---Open socket for streaming---*/

    if ( (sC = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
        perror("Socket");
        exit(errno);
    }


/*---Initialize server address/port struct---*/

    bzero(&dest, sizeof(dest));
    dest.sin_family = AF_INET;
    dest.sin_port = htons(server_port);

    if ( inet_aton(server_addr, &dest.sin_addr.s_addr) == 0 ) {
        perror(server_addr);
        exit(errno);
    }

/*---Connect to server---*/

    if ( connect(sC, (struct sockaddr*)&dest, sizeof(dest)) != 0 ) {
        perror("Connect ");
        exit(errno);
    }


    write (s, msg_read, strlen(msg_read)+1);



    close(s);
    close(sC);

}

Porém não está dando certo...

Aparentemente a mensagem não está sendo lida corretamente...

Alguém poderia me ajudar por favor?

Abraços...

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...