MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

Participe do fórum, é rápido e fácil

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Visual basic 6 Winsock - Parte IV

Ir para baixo

Esse tópico foi útil?

Visual basic 6 Winsock - Parte IV I_vote_lcap100%Visual basic 6 Winsock - Parte IV I_vote_rcap 100% 
[ 1 ]
Visual basic 6 Winsock - Parte IV I_vote_lcap0%Visual basic 6 Winsock - Parte IV I_vote_rcap 0% 
[ 0 ]
Visual basic 6 Winsock - Parte IV I_vote_lcap0%Visual basic 6 Winsock - Parte IV I_vote_rcap 0% 
[ 0 ]
 
Total de votos : 1
 
 

Visual basic 6 Winsock - Parte IV Empty Visual basic 6 Winsock - Parte IV

Mensagem por DragonicK Sex 30 Ago 2013, 21:55

Trabalhando com muitos clientes.
Essa parte é apenas no servidor, para entender, recomendo estudar array.

No visual basic 6, há a opção para criar um array de controle dentro da caixa de propriedades. Isso facilita um pouco.

Visual basic 6 Winsock - Parte IV 1iwh
O que vamos fazer é usar apenas 1 winsock para escutar as conexões e, aceita-las no winsock adicional.

Server(0) será a porta para todas as conexões, quando uma nova conexão for aceita. Colocaremos essa conexão no Server(1) e assim por diante.

Eu adicionei um listbox ao servidor, ficando:
Visual basic 6 Winsock - Parte IV 27t3

Vou abrigar 10 clientes no servidor, nesse caso, tenho que criar 10 variaveis buffer, uma cada para cliente. Criei uma estrutura com buffer e uma variavel boolean como conected.

Visual basic 6 Winsock - Parte IV Px98

No command1, o botão para ligar o servidor, precisamos inicializar os novos winsock para não causar nenhum erro ao programa. Perceba que, Server(0) sempre será o winsock de escuta.
Visual basic 6 Winsock - Parte IV Dvu1

A partir de agora, quando trabalhamos com controle de array, os métodos dos objetos sempre devem conter o parâmetro "Index", esse index é o número de cada controle. 

Se alguém conectar no primeiro controle Server(1), o número da conexão desse individuo será 1 e sucessivamente.

Quando a conexão fechar, esse cliente será desconectado para que outro possa conectar no mesmo lugar, caso contrário, o winsock continuará ocupado sendo que não há ninguém conectado.

Visual basic 6 Winsock - Parte IV D8r0

No metodo ConnectionRequest, vamos procurar por um lugar disponível nas nossas variaveis. 

Server(0) só receberá a conexão e irá procurar algum lugar livre para aceita-la.

Visual basic 6 Winsock - Parte IV Vmwg

No método DataArrival, onde os dados chegam, cada informação que chegar ao servidor, devemos colocar dentro de seus respectivos donos para que não haja nenhuma confusão. 
Foi esse o motivo de eu ter trocado, buffer por Cliente(Index).buffer.

Visual basic 6 Winsock - Parte IV Np7p

E por último, o HandleData, a diferença é que vamos passar o número index para ele também para que o servidor possa devolver os dados caso necessitar.

Visual basic 6 Winsock - Parte IV 6dy0

Criamos 11 winsock no servidor, o Socket número 0, será o responsável por aceitar todas as conexões na porta 666. 

Quando ocorre um novo pedido de conexão, o Socket 0, joga a conexão nos winsock de 1 a 10, a porta 666 sempre estará livre pois quem está com as conexões são os winsock 1 a 10.

A porta 666 esperando por uma conexão.
Visual basic 6 Winsock - Parte IV 3ifc

Abri 5 clientes e conectei ao servidor.
O cliente 1 conectou com a porta 9940 na porta 666 do servidor.
O cliente 2 conectou com a porta 9941 na porta 666 do servidor.
O cliente 3 conectou com a porta 9942 na porta 666 do servidor.
O cliente 4 conectou com a porta 9943 na porta 666 do servidor.
O cliente 5 conectou com a porta 9944 na porta 666 do servidor.
Visual basic 6 Winsock - Parte IV 5x5k

Download Winsock Aula 4
DragonicK
DragonicK
Membro de Honra
Membro de Honra

Mensagens : 315

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos