ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Sugestões para chat interno entre computadores com servidor

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
ftorresini
Novato
Novato


Registrado: Sexta-Feira, 30 de Junho de 2017
Mensagens: 16

MensagemEnviada: Dom Set 24, 2017 8:14 pm    Assunto: Sugestões para chat interno entre computadores com servidor Responder com Citação

Buenas,
alguém já fez um chat interno onde os computadores pudessem ter um servidor intermediário nos envios de mensagens entre computadores?

Ex:
pc -> server -> pc

pc <- server <- pc


Onde o servidor controlasse para qual computador a mensagem de origem deverá receber.

Eu só encontrei de "pc -> server" e "server -> pc".
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1368
Localização: Alagoas - AL

MensagemEnviada: Qui Nov 30, 2017 12:27 am    Assunto: Responder com Citação

É basicamente a mesma coisa.

caso 1 servidor retem a mensagem
cliente1 <-> servidor

caso 2 servidor repassa a mensagem ao destinatario
cliente1 <-> servidor <-> cliente2

Se você conhece o caso 1, então é uma questão de logica do que fazer com a mensagem que chega ao servidor.

Então é aconselhável a criação de um protocolo de envio de mensagem.
o mais simples é reservar 4 bytes iniciais da mensagem para informar quem é o destinatario

exemplo:
ip do servidor -> 198.168.0.100
ip do cliente 1 -> 198.168.0.105
ip do cliente 2 -> 198.168.0.108

vamos agora supor que o cliente 1 quer enviar uma mensagem para o cliente 2
a mensagem seria "olá Jackson"

o cliente 1 vai ter que criar a mensagem da seguinte forma:

[4 bytes do ip do cliente 2]+massagem

esta mensagem chegando ao servidor a primeira coisa que o servidor deverá fazer é ler os primeiros 4 bytes da mensagem reconhecer quem é o destinatário e a encaminhar tal como recebeu incluindo os 4 bytes, isso pq o destinatário ao receber a mensagem vinda do servidor precisa reconhecer quem foi o remetente.

Agora se o cliente 1 quiser enviar a mensagem para todos os dêmias cliente conectado ao chat ele devera enviar com o
ip 255.255.255.255 "este é apenas um exemplo"

Assim como se o cliente 1 quiser enviar a mensagem apenas para o servidor ele enviar com o ip 0.0.0.0

desta forma você teria


bytes[0,0,0,0]+mensagem -> a mensagem só é recebida pelo servidor e não é repassada a nenhum cliente
bytes[255,255,255,255]+mensagem -> a mensagem é recebida pelo servidor e enviada a todos os cliente participante do chat
bytes[?,?,?,?]+mensgaem -> a mensagem é recebida pelo servidor e enviada apenas para o cliente que possui o ip que for colocado no local das "?"

mais antes de tudo voce precisa fazer com que o servidor liste todos os cliente participante, isso pq cada cliente que se conectar ao chat precisa receber esta lista do servidor logo que se conecte a ele e também toda vez que o servidor notar alteração na lista como um novo cliente que tenha se conectado ou desconectado.

esta lista vai o numero do ip dos clientes assim como seu nome para melhor orientar os usuários que se encontra no cliente.

exemplo de lista
cliente 1 ip = 198.168.0.105, nome = "joao"
cliente 2 ip = 198.168.0.108, nome = "alex"

você pode adotar o ip 255.255.255.254 para o envio das lista, desta forma se uma mensagem com o ip 255.255.255.254 chegar ao cliente ele saberá que esta mensagem se trata de uma lista com nome e ip dos demais cliente participante do chat.


se você quiser pode separar os item da lista por virgula e o ip do nome por @ ficando a lista da seguinte forma
"joao@198.168.0.105,alex@198.168.0.108" assim para enviar esta lista aos clientes bastaria o servidor enviar a mensagem a todos os participante da seguinte forma:

bytes[255,255,255,254]+"joao@198.168.0.105,alex@198.168.0.10".

o cliente ao receber saberia que esta mensagem trata da lista de participante do chat, apenas pelos 4 primeiros bytes da mensagem.

para exbir os clientes para o usuário bastaria exibir o nome da lista deixando oculto o ip do participante (este ip deve ser guardado e vinculado ao nome pois quando o usuário escolher "joao" o cliente precisa saber que o ip do joao é 198.168.0.105)

Este seria o protocolo mais simples para chat, claro há mil e uma maneira de se fazer chat desta forma.

É tb recomendado por exemplo usar um banco para caso um cliente estivesse offline e ele poder ler tão logo que conectasse ao chat, mais isso já é outra historia.
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 2545
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Nov 30, 2017 8:34 am    Assunto: Responder com Citação

Não sei se é exatamente o que você quer, mas quando precisei criar um chat deste tipo usei o tutorial deste link:

http://blogprogramadores.blogspot.com.br/2011/03/chat-com-sockets-um-pouco-diferente-do.html
_________________
''A persistência é o menor caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB