Autor Tópico: Comunicação por sockets  (Lida 8522 vezes)

ronamore

  • Newbie
  • *
  • Mensagens: 6
  • Karma: +0/-0
Comunicação por sockets
« Online: Junho 29, 2007, 09:02:10 am »
Bom dia a todos.

Fiz dois programas simples de comunicaçao por socket em C++, um cliente e um servidor.
Fiz também duas versões. Uma para rodar no Linux e outra no windows.

Rodando dentro do ambiente linux, ambas (a cliente e a servidora) conseguem estabelecer uma comunicação (o firewall não esta ativado). Dentro do windows também a comunicaçao funciona sem problemas.

Fui realizar outro teste: rodando o servidor no linux e o cliente no windows. Não houve estabelecimento de comunicação, o socket é criado mas não há conexão com o servidor.  Fiz o inverso também, o servidor rodando no windows e o cliente no linux. Sem sucesso também.

Achava que por rodar em cima de tcp/ip a comunicação entre os dois ambientes fluiria sem problemas.

Alguem sabe onde está o problema nesta comunicação?

Obrigado.

Comunidade de Usuários do openSUSE

Comunicação por sockets
« Online: Junho 29, 2007, 09:02:10 am »

leoluzh

  • Hero Member
  • *****
  • Mensagens: 488
  • Karma: +0/-0
  • B. Computer Science
    • ShareYourSource
Re: Comunicação por sockets
« Responder #1 Online: Junho 29, 2007, 03:49:51 pm »
Primeiramente, voce está verificando se está ocorrendo alguma exceção. Outra coisa essa api que está utlizando é compativel para esse dois sistemas???? Lembro que no Windows api chama-se winsockets dê uma olhada nisso ai!!!
« Última modificação: Junho 29, 2007, 04:07:58 pm por leoluzh »
Get openSuSE !!!

Dove c`è un italiano, c`è una Italia

ronamore

  • Newbie
  • *
  • Mensagens: 6
  • Karma: +0/-0
Re: Comunicação por sockets
« Responder #2 Online: Junho 29, 2007, 04:09:19 pm »
Que compatibilidade de APIs precisto ter entre os dois sistemas?
Pensei que os clientes e e servidores rodando e sendo compativeis dentro de seus ambientes fossem comunicaveis tambem entre SOs.


leoluzh

  • Hero Member
  • *****
  • Mensagens: 488
  • Karma: +0/-0
  • B. Computer Science
    • ShareYourSource
Re: Comunicação por sockets
« Responder #3 Online: Junho 30, 2007, 08:27:36 am »
Não, acho que voce não me compreendeu bem. Ok, voltemos ao inicio. O que eu quero dizer a voce e que seu programa pode estar usando um biblioteca de sockets que não é portavel para os dois sistemas. Você já deve ter estudado que sistemas operacionais possuem interfaces de acesso as funcionalidades, porem essas funcionalidades pode ter assinaturas ou nomes diferentes em sistemas operacionais distintos. Logo, o seu programa pode não estar funcionando por causa disso.

O que voce pode fazer é programar o seu codigo C++ utitlizando macros, e quando voce compilar o voce poderá  ter-lo especifico para um determinado tipo de sistema operacional .... veja o seguinte exemplo:

#ifdef WIN32
#include <winsock.h>
#else
#include <sys/socket.h>
#endif

Essa macro diz que quando voce compilar para sistemas windows a biblioteca que será incluida e utitlizada no programa será a winsockets. Claro que no decorre do programa voce terá que utlizar-se desse mesmo recurso para cada codigo especifico de um sistema isto, para as chamadas a essas bibliotecas ....

Caso voce não esteja confortavel com o uso de macro procura bibliotecas que já escondam esses detalhes para voce... procure bibliotecas portaveis e multiplataforma.

Agora se não quer se aborrecer com esse tipos de detalhes programe em Java!!!
Get openSuSE !!!

Dove c`è un italiano, c`è una Italia

ronamore

  • Newbie
  • *
  • Mensagens: 6
  • Karma: +0/-0
Re: Comunicação por sockets
« Responder #4 Online: Julho 02, 2007, 04:26:13 pm »
Quanto a isto sem problemas.

Nao estou compilando o fonte windows no linux. Fiz uma versao para cada ambiente.
Como disse as versoes Windows (cliente e servidor) comunicam-se sem problemas (dentro do windows). As versoes linux tambem (dentro do linux).

A comunicação que nao consigo fazer funcionar é rodar o servidor no linux e disparar o cliente do windows para que se comunique com este servidor, ou rodar o servidor no windows e disparar o cliente no linux.

Fiz aplicativos onde posso especificar o endereco do servidor e qual porta a utilizar.

Nao tenho firewall rodando em nenhum ambiente.

Perry Werneck

  • Membro Jr.
  • **
  • Mensagens: 36
  • Karma: +0/-0
Re: Comunicação por sockets
« Responder #5 Online: Dezembro 31, 2007, 10:38:45 am »
Ola,

Bom, acho que o melhor é usar o método "Jack"...

Pelo que entendi da sua mensagem o socket() chega a ser criado normalmente, porem, o connect() falha daí podemos partir para dois caminhos...

 1. O servidor não está respondendo na porta correta: Tente usar o comando "telnet" para confirmar se há conectividade entre os dois.

 2. O cliente não estã conseguindo conectar: Nesse caso o código de erro retornado pela função connect() deve ajudar. (-;

eliseujn

  • Newbie
  • *
  • Mensagens: 6
  • Karma: +0/-0
Re: Comunicação por sockets
« Responder #6 Online: Julho 06, 2008, 04:49:45 pm »
Pode ser ser a definição da porta.Cliente e Servidor, tem que está configurado com a mesma porta.
Se no linux a porta é 3000 e no windows 4000, não ira funcionar.

Comunidade de Usuários do openSUSE

Re: Comunicação por sockets
« Responder #6 Online: Julho 06, 2008, 04:49:45 pm »

pedroporto

  • Newbie
  • *
  • Mensagens: 1
  • Karma: +0/-0
Re: Comunicação por sockets
« Responder #7 Online: Maio 20, 2009, 04:54:05 pm »
Cara, manda pra mim por favor estes códigos todos do cliente servidor pra eu testar e comparar com uns que fiz tb aqui na minha especialização. Por favor mantem contato.
abraço