Sockets. Como definir uma conexão?

23/05/2003

1

Tenho uma máquina server e alguns clientes.

Quando conecto as máquinas, vamos dizer que sejam 3.
No socket consta conexões ativas: 3

Conexão 0 : primeira máquina que logou
Conexão 1: segunda máquina que logou
Conexão 2: terceira máquina que logou

Se eu desconecto a segunda máquina que logou fica assim:
Conexão 0 : primeira máquina que logou
Conexão 1: terceira máquina que logou

Se eu desconecto a primeira máquina que logou fica assim:
Conexão 0: terceira máquina que logou

Isso me gera problemas na hora de desconectar uma determinada máquina pelo server, e também no meu listbox de refresh.


O que eu preciso saber é se tem como depois de as máquinas logadas, definir qual máquina vai estar em qual conexão.

Exemplo:
micro1 conexão 0
micro2 conexão 1
micro3 conexão 2
micro4 conexão 3
micro5 conexão 4


Responder

Posts

23/05/2003

Latrodectrus

Se não for possível fazer isso agradeço se alguém der alguma sugestão, para resolver meu problema.


Responder

24/05/2003

Juan Basso

Estou passando o fim de semana na casa de meus pais, mas acho que tenho sua resposta em minha casa. Segunda ou terça é possível que eu lhe respoda.


Responder

24/05/2003

Rafael Heise

Um dos sistema que já fiz, trabalhava com um programa Server, que era um serviço, e as máquinas logavam nele...
como fiz isso ... guardei uma lista das máquinas conctadas...
e ao verificar as conexões, não buscava simplesmente pela coneão, varria o array de conexões e pegava a máquina certa pelo seu ip, pois isso não muda !!! =D ...
abraços...
e depois, um for num array pra ver o ip é muitooo rapido ...
então .... não tem problema....


Responder

26/05/2003

Latrodectrus

Valeu pela dica, mas acho que no meu caso não vai funcionar.

Pois trabalho com uma rede DHCP onde os ip são configurados automaticamente, mas o host de cada máquina é o mesmo.


Responder

26/05/2003

Rafael Heise

Bom .. se o ip é configurado automaticamente.. mas na hora em que ele se loga na rede.. imagina se ele ficasse mudando de ip a toda hora.... mesmo DHCP , o ip é o mesmo quando você entra na rede, até o momento em que você sai ... pelo menos pelo que eu sei é assim .. ou eu to falando asneiras...
masss.. se o host é o mesmo .. .então usa o host...
=)
boa sorte...


Responder

26/05/2003

Pamploni Cadé

Olá, amigo
Fiz um software para minha Lan house e me deparei com esse problema. Já o Resolvi.
Cara se você comprar o cod. fonte do meu software te dou todo o suporte para você resolver esse seu problema.

Desculpa se estou parecendo Mercenário!! Mas é que meu software, para o seu porte, está a preço de banana (R$35,00)

Se ficar interessado é só me passar um e-mail (pamploni@bol.com.br)


Sem mais

Pamploni Cadé


Responder

27/05/2003

Rafael Heise

Na revista do clube delphi, trabalhando com sockets tem um exemplo bem fácil sobre isso ....
sobre utilização de sockets .....
mas se você quiser.. posso te passar um exemplo de chat que fiz em casa, que usava várias conexões pra conversarem, é o que você quer fazer... então ....
só me dá seu email ...
é de graça.. hehehehehe


Responder

27/05/2003

Luza

E se vc colocar um ip fixo pra cada maquina usuario?

Talvez vc nao tivesse q se preocupar com o DHCP...


Desculpe a intromissao.


Responder

27/05/2003

Latrodectrus

Luiza:
- não posso usar ips fixos por que é o meu modem que serve ips.(não tenho servidor de internet)


Zerneo:
-se puder agradeço muito, meu e-mail é latrodectrus@yahoo.com.br


Responder

27/05/2003

Latrodectrus

desculpe LUZA e não luiza.


Responder

06/06/2003

Thaisandrade

Não sei se já resolveu seu problema. Acho que a melhor forma de fazer isso é realmente criar um array e guardar nele um identificador para cada máquina que logar. Esse identificador pode ser o host mesmo, jpa que você usa DHCP, apesar que uma vez que um host tem uma concessão com o servidor DHCP ele vai pegar o mesmo IP até essa concessão terminar e quando está conectado à rede o IP não muda, ele só muda quando você desconectar e a concessão estover vencida, senão mesmo desconectando e conectando novamente o IP será o mesmo


Responder

22/12/2005

Paullsoftware

[quote:4f99f7e816=´Pamploni Araújo Cadé´]Olá, amigo
Fiz um software para minha Lan house e me deparei com esse problema. Já o Resolvi.
Cara se você comprar o cod. fonte do meu software te dou todo o suporte para você resolver esse seu problema.

Desculpa se estou parecendo Mercenário!! Mas é que meu software, para o seu porte, está a preço de banana (R$35,00)

Se ficar interessado é só me passar um e-mail (pamploni@bol.com.br)


Sem mais

Pamploni Cadé[/quote:4f99f7e816]

Desulpem a ignorancia mais ai é [b:4f99f7e816]froid[/b:4f99f7e816], o fórum é para nos ajudarmos não para vender-mos nossos trabalhos em troca de favores... se não quizer ajudar não opine! :x


Responder

22/12/2005

Eixox

Eu desenvolvi uma ferramenta que funciona que nem um proxy local. Nessa ferramenta eu tinha um servidor que fornecia as atualizações para as diversas máquinas. Cada máquina que fazia uma conexão e verificava se havia atualizações, registrava seu IP (via DHCP) em StringGrid. Para cada Máquina eu tinha uma lista específica só para colocar as informações dela.

Então, faça o seguinte, na sua aplicação crie uma pequena variável que fica armazenada no registro. Defina uma valor para cada máquina e seu problema tá resolvido. Cada máquina que entrar em contato, mesmo com um ip diferente você saberá que é.

Isso resolveu o meu problema.


Responder

22/12/2005

Pain_elemental

defina um identificador para cada máquina, ou para a sessão. Sempre que ela logar pela primeira vez, defina um identificador para ela. E faça com que no handshake ela passe esse identificador de volta para você. Assim você ganhará e muito em segurança, logging, restrições e tudo mais. Tipo, voce podera liberar por sessão ou por máquina, e poder definir quantas maquinas poderao usar o seu sistema ou quantas sessões simultâneas poderão existir, de forma mais prática.


Responder

22/12/2005

Thomaz_prg

Colega, se você usa ClientSocket e ServerSocket, ao invés de guardar a ordem das conexões, guarde o indice da conexão, para que seja possível se obter o controle de qual máquina se desconectou ou que se quer desconectar.
Supondo que você irá adicionar em um listbox as máquinas que estão se conectando, faça assim, no evento ClientConnect do server:

ListBox1.Items.Add( IntToStr(Socket.SocketHandle) );

No momento em que o cliente desconectar (evento OnClientDisconnect) coloque assim:

if ListBox1.Items.IndexOf( IntToStr(Socket.SocketHandle) ) >= 0 then
ListBox1.Items.Delete(ListBox1.Items.IndexOf( IntToStr(Socket.SocketHandle) ));

Ou seja, ao invés de ficar incrementando e decrementando, use o valor vindo de Socket.SocketHandle para saber quem se conectou e/ou desconectou. Esse valor é único para cada conexão, então dessa forma você manteria o controle tranquilo.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira