END OF FILE: Tutorial Chat Em Delphi



Documentos relacionados
Inserindo Dados no Banco de Dados Paradox.

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Display de Cristal Líquido

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Evitando conflitos em aplicações multi-thread no Delphi/Kylix

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Manual de Instalação e Configuração do SQL Express

Adicionando Propriedades e Funcionalidades aos Componentes Parte II

Delphi IDE. Jocélio Passos Delphi - IDE. Integrad Development Enviroment Ambiente de Desenvolvimento Integrado

Tutorial de Computação Introdução a Programação Gráfica em Lazarus Para MEC 1100 v

PdP. Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006

Projeto Amadeus. Guia de Instalação Windows

Compartilhando arquivos no Windows XP

User Manager 1.0. edtusuario Nome do novo Usuário a ser criado edtsenha Senha do novo usuário Label

Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7

Cobrança Bancária. Contas / Manutenção.

COMO INSTALAR O CATÁLOGO

Como Gerar documento em PDF com várias Imagens

Passo 1: Abra seu navegador e digite Passo 2: Na tela que surgir, clique em Get Started.

Lazarus pelo SVN Linux/Windows

MANUAL DE FTP. Instalando, Configurando e Utilizando FTP

Para participar de um mapa colaborativo usando o Cmap Tools

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Técnico em informática ti 54 Configuração de serviços de rede no Windows 2003 server Ser ver Enterprise

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO

Galeria de Fotos MorfeoShow

MANUAL PORTAL CLIENTE AVANÇO

O que é conexão de área de trabalho remoto?

Configuração da rede Wi-fi da Faculdade de Educação no Windows Vista

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

Configuração do Linux Educacional 5 para melhor uso do MonitorINFO-V4


Procedimentos para Configuração de Redirecionamento de Portas

Instalando o Sysloc versão manualmente

Manual de Instalação de SQL Server (2005, 2008, 2012).

COMPARTILHAMENTO DO DISCO E PERMISSÕES DE REDE PÚBLICAS E DE GRUPOS DE TRABALHO.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

SPARK - CONFIGURAÇÃO

Passa a passo para construir uma página pessoal - Parte 1

Portal dos Fóruns de EJA Brasil

2. Cadastrar Cargo de Funcionário: Gestão> Cadastro> RH> Cargo Cadastro auxiliar necessário quando for preciso cadastrar os funcionários da loja.

MANUAL DO ANIMAIL Terti Software

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Conectar o Nokia 6600 a Internet utilizando a conexão do PC (ADSL) pelo Bluetooth sem Proxy

Instalando e configurando o IIS no Windows Server 2012 Depois do Windows server 2012 instalado, devemos adicionar IP estático a ele, vamos abrir o

CRIAÇÃO DE RELATÓRIOS EM DELPHI

Configurar o Furbot no Eclipse

PROJECT 1 Delphi Project (Extensão. DPR)

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

USANDO O ROUNDCUBE WEBMAIL

Acessando a Porta Paralela com o Delphi. Vitor Amadeu Souza. vitor@cerne-tec.com.br

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Downloads no EU VOU PASSAR 2.0

Sistema básico de cadastro em Delphi com banco de dados InterBase.

Tutorial. Windows Live Mail

DNS DOMAIN NAME SERVER

CRIANDO UM BANCO DE DADOS

DNS DOMAIN NAME SERVER

O QUE É A CENTRAL DE JOGOS?

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Obs: É necessário utilizar um computador com sistema operacional Windows 7.

Procedimentos para Reinstalação do Sisloc

LIBERAÇÃO DA PASTA ARQUIVOS DE PROGRAMA

Clique em "next" para continuar e verá a seguinte imagem:

FileZilla Server. O FileZilla Server é um ótimo servidor FTP, conta com diversas funções e fácil instalação e configuração.

1.Roteador Re054 e RE108

Enviando Arquivos para a Neoband

VIAWEB service. Cadastrar empresa de segurança. Versão PASSO 1 Cadastro:

Tutorial para configurar o do IFSC usando o OUTLOOK EXPRESS

Tutorial de Atualização de Mikrotik

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Tutorial - DVD Flick

Daruma NFCe Conheça todos os passos para testar a NFCe Daruma

Parte 2: Micro com Windows XP Pro e Servidor IIS

Tutorial para ensinar a mexer pagina modelo da UFPI.

Configurando o IIS no Server 2003

Manual de instalação, configurações e uso do LiveZilla

U3 Sistemas Análise e Desenvolvimento de Softwares ===== Manual de Rede Interna ===== Manual. Rede Interna

Manual do Sistema "Fala Comigo - Sistema de Atendimento On-Line" Editorial Brazil Informatica

P Procedimento para Instalação do SisGEF 7.0 na Máquina Servidor

Manual Fácil 1 DOWNLOAD E INSTALAÇÃO. 1. Como faço o download do Jimbo Mobile?

Como instalar o Ocomon passo a passo.

DELPHI 7 LINGUAGEM DE PROGRAMAÇÃO AMBIENTE CLIENTE SERVIDOR

Recuperando a comunicação com o seu Modem DSL-500G

Data: 22 de junho de

Assinatura ainda não verificada

Delphi 7 Aula 01 Área do Triângulo

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo

Treinamento - Union Web

Migrando Bancos de Dados pelo Delphi

No meu caso usei o huawei e1756, onde tirei a opção de autorun, pois se estiver ativada, não será detectado pelo sistema.

Acesso à Dados ZEOS x Delphi. Professor Anderson

Analisando e comparando as funções do DBNavegator

Transcrição:

END OF FILE: Tutorial Chat Em Delphi fórum: http://offile.umforum.net site: http://fts315.xp3.biz autor: kõdo no kami (www.facebook.com/hacker.fts315) - skype: hackefts315 greetz: mmxm, sir.rafiki, suspeit0@virtual, entre outros 01/06/2014 (sem revisão) E ae galera nesse tutorial vou ensinar como construir um chat basico em delphi 7 (embora o delphi que eu vou usar seja o d7 é possivel fazer a mesma coisa nos mais recentes), um chat é uma forma de enviar e receber dados via rede seja uma rede local ou a internet para duas ou mais pessoas se comunicar, na maioria das vezes um chat usa sockets para estabelecer uma conexao entre duas ou mais maquinas, existem pelo menos 4 maneiras de usar socket no delphi 7 tem os componentes da aba internet (tcpclient, tcpserver, udpsocket), tambem existe o compente que vem com o delphi 7 mas nao vem instalado tambem da aba internet (clientsocket e serversocket), tem o componente da aba indy client e server (idtcpclient, idudpclient, idtcpserver e idudpserver), tambem é possivel usar o socket manulmente com API do proprio sistema windows, vamos usar nesse tutorial o clientsocket e serversocket Indice 1 construindo a nossa interface 2 salvando e compilando 3 criando o codigo 4 incrementado o chat 5 instalado o clientsocket e serversocket 6 codigo fonte completo 1 construindo a nossa interface vamos começar construido a nossa interface, essa inteface sera composta de 3 edits da aba standards so um para onde vamos colocar o ip, outro para a porta, e outro para onde vamos escrever, vamos usar 2 buttons da aba standards um botao vai ser para conectar e outro para enviar no texto, 1 memo da aba standards para o texto que vamos receber, 2 radiobutton da aba standards para definir se ele vai ser o cliente ou servidor, 1 clientsocket da aba internet e 1 serversocket tambem da aba internet (o clientsocket e servesocket nao vem instalado porem vem junto), minha interface vai ficar dessa maneira voce pode deixar igual ou deixa do seu gosto

agora vamos configurar os atributos dos componentes que colocamos, vamos começar com os dois edits aperte no primeiro edit e va na aba object inspector, procure pelo atributo Text e apague tudo que estiver dentro dele e faça o mesmo com o outro edit no componente memo procure no object inspector o atributo Lines depois de dois cliques nele (ou aperte nos... no lado), vai abrir uma aba apaga todo texto nos componentes button procure o atributo caption e dentro dele escrevemos o texto do botao no caso o primeiro eu escrevi conectar e no segundo enviar no componente radiobutton tambem mudamos o Caption no caso eu coloquei cliente e no outro

servidor e um deles no atributo Checked eu coloque true (isso serve para marca um radio como o padrao porem ative isso em apenas um radio) agora mudamos alguns atributos do form aperte em qualquer parte do form menos em um componente depois no object inspector procure caption ali escrevemos o nome que vai ser mostrado na janela no caso coloquei "fts chat", tambem vamos evitar do usario expandir e maximimizar a janela para isso mudamos o atributo BorderStyle para bssizeable, e BorderIcons -> bimaximimize colocamos false 2 salvando e compilando antes de compilar para testar vamos salvar o projeto, para salvar um projeto no delphi basta apertar no menu file -> save all e por fim escolher um local onde salvar depois de salvar aperte no botao compilar para gerar o executavel ou aperte menu run -> compiler

depois de apertar no botao compilar ele vai automaticamente gerar o executavel e abrir ele (voce pode abrir pelo executavel no diretorio onde esta salvo tambem) 3 criando o codigo ate agora nosso programa tem apenas a interface grafica porem ele nao faz nada, temos que criar a parte do codigo que vai fazer a conexao no caso do cliente ou esperar a conexao no caso do servidor, apertamos no componente button que vai ativar a conexao (no caso é o botao conectar), no object inspector em eventos damos dois cliques no onclick (esse evento serve para quando alguem apertar o botao ele executa determinado codigo), vai ser gerado procedimento dentro do escopo e colamos o nosso codigo

assim que a gente apertar no botao o programa deve saber se vai conectar como cliente ou servidor, para isso vamos usar uma condição if e ver qual é radiobutton que esta selecionado (vou evitar o uso de imagem nessa parte de codigo para ficar mais legivel), o meu componente radiobutton se chama rb1 (esse é o cliente) e outro rb2 (esse é o servidor), o codigo abaixo eu digo para o programa executar o primeiro escopo caso o checked do primeiro radiobutton seja true (ou seja eles estiver selecionado), se nao ele executa o segundo escopo (os radiobutton apenas um pode esta selecionado dentro de um painel ou seja se o primeiro radiobutton nao estiver selecionado isso quer dizer que é o segundo), dentro do escopo do if eu configuro o cliente e dentro do escopo do eu configuro o servidor procedure TForm1.btn1Click(Ser: TObject); vamos primeiro configurar o cliente, no escopo do if a gente atribui para o host do clientsocket o mesmo texto que esta dentro do primeiro edit que seria o ip, e para o atributo port atribuimos o segundo edit que seria a porta (porem na porta temos que converte o tipo string para inteiro), tambem ativamos o cliente atribuido true para o atributo active procedure TForm1.btn1Click(Ser: TObject); ClientSocket1.Host := edt1.text; ClientSocket1.Port := StrToInt(edt2.Text); ClientSocket1.Active := True;

agora o servidor fazemos o mesmo, porem ao inves de usar o componente clientesocket usamos o componente serversocket, nele so precisamos definir a porta e ativa-lo procedure TForm1.btn1Click(Ser: TObject); ClientSocket1.Host := edt1.text; ClientSocket1.Port := StrToInt(edt2.Text); ClientSocket1.Active := True; ServerSocket1.Port := StrToInt(edt2.Text); ServerSocket1.Active := True; no evento onclientread do componente serversocket, adicionamos um codigo para pegar o texto recebido e atribuir ele ao memo (para pegar o texto usamos Socket.ReceiveText do componete serversocket) procedure TForm1.ServerSocket1ClientRead(Ser: TObject; mmo1.lines.add('ele: '+ Socket.ReceiveText); no evento onread do componente clientesocket fazemos o mesmo que anterior so que usado o clientsocket procedure TForm1.ClientSocket1Read(Ser: TObject; mmo1.lines.add('ele: '+ Socket.ReceiveText); os dois codigos anteriores diz ao programa que quando eles receber os texto da outra pessoa vai adicionar o texto no memo, agora vamos fazer o oposto que é enviar o texto do cliente para o servidor ou vice versa, no evento onclick do botao que vai enviar colocamos a mesma condição if para saber se é o servidor ou cliente procedure TForm1.btn2Click(Ser: TObject);

no caso vamos usar o metodo Socket.SText no clientsocket, passamos como argumento para ele o texto que vamos enviar ou seja o edit onde escrevemos o nosso texto, tambem escrevemos o mesmo texto no memo e por fim limpamos o edit para novos textos procedure TForm1.btn2Click(Ser: TObject); ClientSocket1.Socket.SText(edt3.Text); mmo1.lines.add('voce: '+edt3.text); edt3.text := ''; no caso do servidor tambem podemos usar apenas o Socket.SText igual o cliente porem as vezes da erro de socket se nao especificar para qual conexao estamos enviando para evitar isso usamos o Connections seguido do numero 0 como index (caso seu chat vai ter mais de uma conexao vc vai alternando esse numero), e por fim usamos o SText com o texto da edit que vamos enviar procedure TForm1.btn2Click(Ser: TObject); ClientSocket1.Socket.SText(edt3.Text); ServerSocket1.Socket.Connections[0].SText(edt3.Text); mmo1.lines.add('voce: '+edt3.text); edt3.text := ''; O chat ta pronto agora basta testar (nao precisa testar em duas maquinas voce pode digitar o ip de loopback que é 127.0.0.1 ou pelo host localhost), no caso aqui eu usei uma maquina virtual que eu uso para analise de malware

4 incrementado o chat agora que a gente ja viu a parte basica de conexao vamos incrementar um pouco mais ele, primeiro vamos fazer um botao para desconectar (obs: eu nao esqueci dele nao ta kkkkkk), do lado do conectar colocamos um novo button de dentro do evento onclick dele colocamos o codigo para mudar o atributo Active para False tanto do ClientSocket quanto do ServerSocket procedure TForm1.btn3Click(Ser: TObject); ClientSocket1.Active := False; ServerSocket1.Active := False; outra coisa que seria legal e desabilitar os edits o botao de conectar e radios para evitar da pessoa ficar mexo nele quando o chat ja estiver conectado, so lembrando para nao desabilitar o memo o edit e o botao que vamos usar para enviar ne, para desabilitar colocamos false nos atributos Enabled de todos eles (podemos colocar o codigo no evento do botao conectar) procedure TForm1.btn1Click(Ser: TObject); ClientSocket1.Host := edt1.text; ClientSocket1.Port := StrToInt(edt2.Text);

ClientSocket1.Active := True; ServerSocket1.Port := StrToInt(edt2.Text); ServerSocket1.Active := True; edt1.enabled := false; edt2.enabled := false; rb1.enabled := false; rb2.enabled := false; btn1.enabled := false; fazemos o oposto no botao desconectar habilitamos denovo os botoes e edits procedure TForm1.btn3Click(Ser: TObject); ClientSocket1.Active := False; ServerSocket1.Active := False; edt1.enabled := true; edt2.enabled := true; rb1.enabled := true; rb2.enabled := true; btn1.enabled := true; outra coisa boa seria quando alguem se conectar no servidor ou cliente ele adicione uma mensagem de conectado no memo, no ServerSocket basta coloca no evento onclientconnected e no ClientSocket basta colocar no evento OnConnect, tambem podemos colocar para mostrar uma caso desconecte no evento ondisconnect do cliente e no servidor no evento onclientdisconnected procedure TForm1.ServerSocket1ClientConnect(Ser: TObject; mmo1.lines.add('conectado'); procedure TForm1.ClientSocket1Connect(Ser: TObject; mmo1.lines.add('conectado'); procedure TForm1.ClientSocket1Disconnect(Ser: TObject; mmo1.lines.add('desconectado');

procedure TForm1.ServerSocket1ClientDisconnect(Ser: TObject; mmo1.lines.add('desconectado'); 5 instalando o client socket e serversocket no delphi não vem instalado o componente clientsocket e serversocket, para instalar ele basta apertar no menu component e depois install package na nova aba aperte em add e procure a pasta que seu delphi esta instalado dentro dele tem uma pasta bin (meu caso é no ereço C:\Program Files\Borland\Delphi7\Bin), dentro dessa pasta tem o componente dclsockets70.bpl abra ele e aperte ok

depois olhe na aba internet para ver se eles foram instalados 6 codigo fonte completo voce tambem pode baixar a source pelo forum ou no site unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp; type TForm1 = class(tform) edt1: TEdit; mmo1: TMemo; btn1: TButton; edt2: TEdit; rb1: TRadioButton; rb2: TRadioButton; edt3: TEdit; btn2: TButton; ClientSocket1: TClientSocket; ServerSocket1: TServerSocket; btn3: TButton;

procedure btn1click(ser: TObject); procedure ServerSocket1ClientRead(Ser: TObject; procedure ClientSocket1Read(Ser: TObject; procedure btn2click(ser: TObject); procedure btn3click(ser: TObject); procedure ServerSocket1ClientConnect(Ser: TObject; procedure ClientSocket1Connect(Ser: TObject; procedure ClientSocket1Disconnect(Ser: TObject; procedure ServerSocket1ClientDisconnect(Ser: TObject; private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Ser: TObject); ClientSocket1.Host := edt1.text; ClientSocket1.Port := StrToInt(edt2.Text); ClientSocket1.Active := True; ServerSocket1.Port := StrToInt(edt2.Text); ServerSocket1.Active := True; edt1.enabled := false; edt2.enabled := false; rb1.enabled := false; rb2.enabled := false; btn1.enabled := false; procedure TForm1.ServerSocket1ClientRead(Ser: TObject; mmo1.lines.add('ele: '+ Socket.ReceiveText);

procedure TForm1.ClientSocket1Read(Ser: TObject; mmo1.lines.add('ele: '+ Socket.ReceiveText); procedure TForm1.btn2Click(Ser: TObject); ClientSocket1.Socket.SText(edt3.Text); ServerSocket1.Socket.Connections[0].SText(edt3.text); mmo1.lines.add('voce: '+edt3.text); edt3.text := ''; procedure TForm1.btn3Click(Ser: TObject); ClientSocket1.Active := False; ServerSocket1.Active := False; edt1.enabled := true; edt2.enabled := true; rb1.enabled := true; rb2.enabled := true; btn1.enabled := true; procedure TForm1.ServerSocket1ClientConnect(Ser: TObject; mmo1.lines.add('conectado'); procedure TForm1.ClientSocket1Connect(Ser: TObject; mmo1.lines.add('conectado'); procedure TForm1.ClientSocket1Disconnect(Ser: TObject; mmo1.lines.add('desconectado');

procedure TForm1.ServerSocket1ClientDisconnect(Ser: TObject; mmo1.lines.add('desconectado');.