Visual basic 6 Winsock - Parte IV Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Visual basic 6 Winsock - Parte IV

2 participantes

Ir para baixo

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

Mensagem por DragonicK Seg Jan 27, 2014 7:13 pm

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


http://www.mediafire.com/download/oe5d0440495635a/Winsock_Aula_4.rar
DragonicK
DragonicK
Experiente
Experiente

Mensagens : 543
Créditos : 81

Ficha do personagem
Nível: 1
Experiência:
Visual basic 6 Winsock - Parte IV Left_bar_bleue0/0Visual basic 6 Winsock - Parte IV Empty_bar_bleue  (0/0)
Vida:
Visual basic 6 Winsock - Parte IV Left_bar_bleue30/30Visual basic 6 Winsock - Parte IV Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

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

Mensagem por Tobi S2 Seg Fev 17, 2014 6:50 am

Valeu pela outra boa aula! Eu fiquei com algumas duvidas, depois de tudo que li até agora
É dessa forma que os servidores de grande porte funciona tbm? Quantos clientes aproximadamente esse cliente suportaria num pc comum?
Tobi S2
Tobi S2
Novato
Novato

Mensagens : 14
Créditos : 2

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