Olá colega!

Tomando como exemplo 3 maquinas se comunicando...
basicamente seria o seguinte:

maquina 1 cliente
terá um programa
codificado com um SocketClient

maquina 2 cliente
terá um programa
codificado com um SocketClient

maquina 1 servidor
terá um programa
codificado com um SocketServer

um outro colega já lhe deu uma dica sobre protocolos a serem criados.

digamos que o cliente 1 deseje se comunicar (conversar) com o cliente 2

ex:
o cliente 1 envia para o servidor (com ip fixo)
uma string contendo uma série de informações (isto é o protocolo)

ip_do_cliente_1###nick_do_cliente_1###nick_do_cliente_2###mensagem_do_cliente_1

então o SocketServer lê e quebra/separa esta string...

ex:
ip_do_cliente_1
nick_do_cliente_1
nick_do_cliente_2
mensagem_do_cliente_1

imagine que o programa servidor tem uma lista
de todos os nicks e ips conectados

* ele guarda estas informações no momento de cada conexão estabelecida

então ele irá pesquisar nesta lista o nick_cliente_2
e enviará para o ip_do_cliente_2
a mensagem_do_cliente_1
com o respectivo nick_do_cliente_2

* para que maquina 1 saiba com quem está falando :)

e por ai vai...
a maquina 2 recebe a mensagem do servidor
e retorna da mesma forma (protocolo)
alterando apenas o nick do destino

ex:

A maquina 2 retorna para o servidor (com ip fixo)
a resposta para a maquina 1
com uma string contendo uma série de informações (isto é o protocolo)

ip_do_cliente_2###nick_do_cliente_2###nick_do_cliente_1###mensagem_do_cliente_2

e o processo continua :)

Lógico que eu sintetizei o exemplo.

Vale lembrar que...

* todos os clientes e o servidor
* poder estar se comunicando
* utilizando uma única porta ex: 6666

isto é possível pois o SocketServer
abre + um canal de comunicação na mesma porta...
para o novo cliente que solicitou a conexao.

* pense em uma única estrada
* com n faixas para tráfego dos veiculos :)

existem N variantes que poder ser exploradas...
a depender das necessidades e criatividade do programador.

Ex:

os clientes e o servidor podem utilizar mais de 1 porta para agilizar o 
processo.

1 porta para enviar textos (6666)
outra quando for enviar arquivos/imagens (6667)
outra quando for enviar arquivos/sons (6668)

já da para ver que ...
se o servidor administra as conexões...
então ele pode fazer qualquer coisa com as máquina clientes :)

ex:

_ desconectar qualquer cliente
_ logar as mensagens de todos os clientes
_ enviar mensagens publicitárias para todos os clientes :)
_ enviar arquivos/executáveis e rodar automaticamente nos clientes :)

há...

Um programa poder ser codificado com os sockets (client/server)
neste caso cada máquina seria também um servidor :)

normalmente o servidor tem que ter um IP fixo (este é o correto)
mas nada impede do servidor tenha um IP dinâmico
e nele tenha uma rotina codificada que envie por exemplo
seu IP atual dentro de um .txt para um FTP (este teria o IP fixo)
e os clientes (socketclient) antes de solicitarem a conexão
leriam de alguma forma o IP que estaria no .txt no FTP
(existem n maneiras de fazer isto)
e só depois solicitar a conexao com a maquina servidora :)
(esta seria uma gambiarra para usuários domésticos)

programas mensageiros como o msn e outros utilizam técnicas similares...
trojans :) utilizam também este tipo de técnica :)
os sockets são poderosos pois são a base da comunicação entre as máquinas...
variando apenas as formas de se estabelecer as conexões...
e os protocolos utilizados para a conversação entre as máquina.

* alguns bem conhecidos já são pré-definidos: FTP HTTP SMTP... etc.

bem...
se você quiser dar um primeiro passo construinto um chat
(utilizando conexão dinâmica nos SocketServer)
que permite N conexões de clientes em 1 servidor na mesma porta...
posso sugerir um livro (antigo) mas muito legal
encontrado na www.visualbooks.com.br
com o titulo "desenvolvendo um chat em delphi"
do autor Leandro Cristovão
o link é
http://www.visualbooks.com.br/?show=MostraProduto&chave=3689&categoria=

valeu.
espero ter contribuido de alguma forma.

Luciano-User-BA

> 
> Ok, e com este novo protocolo, como por exemplo ele é enviado....por
> alguma porta? como sai de um micro e vai parar em outro? acho que está é
> minha duvida.
> 
> Desc. Por perguntar...mas não faco ideia nem ao menos do que
> pesquisar...(alem de saber como implementar algo do genero)
> 



[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a