USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Winsock com múltiplas conexões
Leonardo
SÃO PEDRO DA ALDEIA
RJ - BRASIL
ENUNCIADA !
Postada em 22/11/2004 21:51 hs            
Estou fazendo um programa que tem um servidor e um cliente. E eu queria que todos os meus clientes se conectassem no servidor ao mesmo tempo. No Delphi, eu já vi o servidor com 1 winsock suportar múltiplas conexões. Funciona mais ou menos assim:
 
Winsock.Sockets[0] // Conexão 1
Winsock.Sockets[1] // Conexão 2
 
Mas, no VB, esse Sockets não existe. É estranho porque, ao que parece, trata-se do mesmo componente. Alguém sabe se existe alguma coisa similar no VB?
   
Sandro
não registrado
ENUNCIADA !
Postada em 22/11/2004 22:38 hs   
Você deverá criar um array de controles Winsock, para isso, você cria um Winsoc no seu form e atribui a ele o índice (Index) 0, depois, você deverá criar uma nova instância para cada conexão extra que surgir. Para criar uma nova instância, basta fazer o seguinte:
    Load WinSock(1)
    Load WinSock(2)
E assim por diante. Cada componente Winsoc carregado pode utlillizar uma porta diferente, se desejar.
   
Leonardo
SÃO PEDRO DA ALDEIA
RJ - BRASIL
ENUNCIADA !
Postada em 22/11/2004 22:44 hs            
Pode usar uma porta diferente ou deve? Não vai dar erro de porta em uso?
   
Sandro
não registrado
ENUNCIADA !
Postada em 23/11/2004 01:13 hs   
Não, você pode vários controles NO MESMO PROGRAMA usando portas iguais, o problema é um outro programa DENTRO DO MESMO COMPUTADOR usando a mesma porta. O Winsock usa o conceito de Sockets do Windows. Um Socket é um endereço IP associado a uma porta do TCP/IP. Você pode ter cerca de 32.000 portas diferentes para cada endereço. Algumas portas são fixas para certos serviços do protocolo, como a porta 80 usada pelo POP (ou será o SMTP? Eu nunca lembro direito...). Um detalhe que eu não citei: Você deverá ter no mínimo dois controles Winsock no seu projeto: um de escuta e outro de comunicação. O de escuta, fica esperando uma tentativa de conexão, este terá uma porta local definida, quando ele receber a solicitação de conexão (evento ConnectionRequest) você deverá disparar uma nova instância do winsoc de comunicação, atrubuindo a ele LocalPort=0 e usando o método Accept, passando para ele o RequestID que vem como parâmetro para o evento. A partir daí, você irá trabalhar apenas com o Winsoc de comunicação, através dos métodos GetData e SendData. Não esqueça de fechar todas as conexões quando o seu programa ecerrar, pois assim, você libera as portas do TCP/IP de forma correta e evita erros de execução no aplicativo.
   
Leonardo
SÃO PEDRO DA ALDEIA
RJ - BRASIL
ENUNCIADA !
Postada em 23/11/2004 01:22 hs            
Consegui fazer aqui, mas de um modo diferente. O meu programa servidor tem um cadastro com todas as máquinas clientes e os seus IPs. Coloquei então no programa cliente um winsock que fica aguardando conexões. No servidor, criei um vetor de winsocks, um pra cada máquina. Aí, ele usa o cadastro e dá um IP pra cada winsock conectar. O cliente aceita a conexão e deixa ativa pra trocar informação quando precisar. Por enquanto, está funcionando bem.
 
Obrigado pela ajuda.
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página