Socket PDF
Socket PDF
Socket PDF
MISSES
PR-REITORIA DE ENSINO
DEPARTAMENTO DE ENGENHARIAS E CINCIA DA COMPUTAO
CAMPUS DE FREDERICO WESTPHALEN
CURSO DE INFORMTICA
DESENVOLVIMENTO DE UMA FERRAMENTA PARA CORREIO ELETRNICO
E MENSAGENS INSTANTNEAS PARA INTRANET
LUCIANO BUZZATTO
Frederico Westphalen (RS), Janeiro de 2005.
2
LUCIANO BUZZATTO
DESENVOLVIMENTO DE UMA FERRAMENTA PARA CORREIO ELETRNICO
E MENSAGENS INSTANTNEAS PARA INTRANET
Monografia de Concluso de Curso, apresentada
como requisito parcial para obteno do Ttulo de
Bacharel em Informtica na Universidade
Regional Integrada Do Alto Uruguai e Das
Misses, pelo Departamento de Engenharias e
Cincia da Computao.
Orientador: Prof. Valmor Jos Prevedello
Frederico Westphalen (RS), Janeiro de 2005.
3
Universidade Regional Integrada do Alto Uruguai e das Misses
Pr-Reitoria de Ensino
Departamento de Engenharias e Cincia da Computao
Curso de Informtica
A Comisso Examinadora, abaixo assinada,
aprova a Monografia de Concluso de Curso.
DESENVOLVIMENTO DE UMA FERRAMENTA PARA CORREIO ELETRNICO
E MENSAGENS INSTANTNEAS PARA INTRANET
elaborada por
Luciano Buzzatto
como requisto parcial para obteno do grau de
Bacharel em Informtica
COMISSO EXAMINADORA
____________________________________
Prof. Valmor Jos Prevedello - URI
(Presidente/Orientador)
_____________________________________
Prof. Leandro Rosniak Tibola - URI
______________________________________
Prof. Elisa Maria Pivetta Cantarelli - URI
Frederico Westphalen (RS), 10 de Janeiro de 2005.
4
DEDICATRIA
Neste momento de realizao,
faz-se necessrio um
agradecimento mensurvel, as
pessoas mais importantes da
minha vida, as quais so
protagonistas da minha
histria, da minha existncia.
Aos meus pais, que no mediram
esforos para que esse sonho,
hoje, pudesse se tornar
realidade.
5
Agradecimentos
Deus pelo dom da vida,
meu pai IVO,
minha me MARIA,
As minhas irms PATRCIA e KTIA,
Aos colegas da TURMA,
Aos meus colegas da MICROSYS,
Ao orientador PROF. VALMOR,
todos (as) os(as) PROFESSORES (AS) do Curso,
Enfim, a todos que incondicionalmente participaram desta
trajetria,
Saibam que vocs fazem parte da minha vida, e representam
muito para com a concretizao do meu sonho...
S resta-me agradec-los, Muito Obrigado!
6
IDENTIFICAO
Instituio de Ensino/Unidade
URI Universidade Regional Integrada do Alto Uruguai e das Misses
Campus de Frederico Westphalen
Direo do Campus
Diretor Geral: Prof. Lauro Paulo Mazzutti
Diretora Acadmica: Prof. Edite Maria Sudbrack
Diretor Administrativo: Bel. Sergio Luiz Zenatti
Departamento/Curso
Departamento de Engenharias e Cincia da Computao: Paulo Ricardo Baptista Betencourt
Curso de Informtica: Dr. Nelson Zang
Disciplina:
Trabalho de Concluso - A
Orientador:
Prof. Valmor Jos Prevedello
7
RESUMO
Atualmente, o domnio da informao faz diferena, ou seja, quem possuir acesso mais rpido
as informaes e souber como us-las, ter um diferencial competitivo. Fatos relacionados ao
domnio da informao vm ocorrendo com freqncia, onde o anseio por tomadas de
decises rpidas e eficazes crescente. As mensagens instantneas e o correio eletrnico, hoje
j se particularizaram e chegaram as empresas que vem estes softwares como aliados
importantes no dia-a-dia corporativo. Porm, ainda existe a necessidade de um software
capaz de rodar em uma rede local, sem estar necessariamente conectado a internet, rodando
apenas na Intranet. Neste sentido, este trabalho apresenta uma nova proposta para o uso do
correio eletrnico na intranet de empresas em geral. Sua principal caracterstica a facilidade
de uso no gerenciamento de mensagens das caixas postais dos usurios. Assim, atravs do
estudo realizado, foi desenvolvido um prottipo de correio eletrnico para uma Intranet e
Chat, a fim de demonstrar a importncia do gerenciamento das mensagens nas instituies,
bem como, agilizar os processos na troca de mensagens, possibilitando o aumento da
produtividade e a diminuio de custos.
Palavras-Chaves: Mensagens instantneas, Correio eletrnico, Intranet.
8
ABSTRACT
Currently, the domain of the information makes difference, or either, who to possess faster
access the information and to know as to use them, will have a competitive differential. Facts
related to the domain of the information come occurring with frequency, where the yearning
for taking of fast and efficient decisions is increasing. The instantaneous messages and the e-
mail, already had distinguished and today arrived the companies who see these softwares as
important allies in the day-by-day corporative one. However, still the necessity of a software
capable exists to twirl in a local net, without being necessarily connected the InterNet,
twirling only in the Intranet. In this direction, this work in general presents new a proposal
for the use of the e-mail in the Intranet of companies. Its main characteristic is the easiness of
use in the management of messages of the post office boxes of the users. Thus, through the
carried through study, an archetype of e-mail for Intranet and Chat was developed, in order to
demonstrate the importance of the management of the messages in the institutions, as well as,
to speed the processes in the exchange of messages, making possible the increase of the
productivity and the reduction of costs.
Words - Keys: Instantaneous Messages, E-mail, Intranet.
9
LISTA DE SIGLAS
TCP/IP Transmission Control Protocol / Internet Protocol
ARPA Advanced Network and Services
SMTP Simple Mail Tranfer Protocol
HTTP. Hypertext Transfer Protocol
E-mail Correio Eletrnico
WWW World Wide Web.
SGBD Sistema Gerenciador de Banco de Dados
DDL Data Definition Language (Comandos CREATE, ALTER e derivados)
DML Data Manipulation Language (Comandos INSERT, UPDATE, e derivados)
10
LISTA DE FIGURAS (ver)
Figura 1 Exemplo de como trafega uma mensagem ............................................. 27
Figura 2 Modelo de rede local .............................................................................. 30
Figura 3 Comparao Modelo OSI TCP/IP ...................................................... 32
Figura 4 Exemplo rede baseada no protocolo TCP/IP ......................................... 37
Figura 5 Exemplo de uma Intranet ....................................................................... 39
Figura 6 Palheta DataSnap Delphi 7. ................................................................ 41
Figura 7 Diagrama de fluxo dados da ferramenta ............................................... 50
Figura 8 Formulrio cadastro de usurios ........................................................... 53
Figura 9 Formulrio principal Servidor ................................................................ 54
Figura 10 Tabelas usadas no Sistema. .................................................................. 54
Figura 11 Configurao IP/Servidor ..................................................................... 56
Figura 12 Login e senha ...................................................................................... 57
Figura 13 Mensagem de erro ............................................................................... 57
Figura 14 Mensagem de erro .login ...................................................................... 57
Figura 15 Formulrio principal Correio ................................................................ 60
Figura 16 Formulrio de envio de mensagem ........................................................ 61
Figura 17 Menu enviar mensagem ....................................................................... 63
Figura 18 Caixa de acesso s mensagens ............................................................ 64
Figura 19 Menu Salvar em disco .......................................................................... 65
Figura 20 mensagem recuperada .......................................................................... 66
Figura 21 Salvar arquivo no servidor .................................................................... 67
Figura 22 Pesquisa usurio ativo ........................................................................... 68
Figura 23 Alterando os meus dados ...................................................................... 69
Figura 24 Chat ........................................................................................................ 70
11
SUMRIO
1. INTRODUO.................................................................................................................. 13
2. OBJETIVOS GERAIS. ...................................................................................................... 15
3 PROCEDIMENTOS METODOLGICOS. ................................................................. 17
3.1 Estrutura do Trabalho. ................................................................................................ 17
4 INTERNET E O CORREIO ELETRNICO. .............................................................. 19
4.1 Correio Eletrnico. .................................................................................................... 21
4.1.1 Prs e contras do Correio Eletrnico. ................................................................... 22
4.1.2 Anatomia de uma Mensagem. .............................................................................. 23
4.1.3 O Cabealho. ........................................................................................................ 23
4.1.4 Identificador de Mensagens.................................................................................. 24
4.1.5 O corpo. ................................................................................................................ 24
4.1.6 A Assinatura. ........................................................................................................ 25
4.2 Como Funciona um Correio Eletrnico. ................................................................. 25
4.2.1 Como trafega uma mensagem. ............................................................................. 26
4.2.2 Simple Mail Transfer Protocol SMTP............................................................... 26
4.2.3 Protocolo IMAP.................................................................................................... 28
5- REDES LOCAIS.................................................................................................................. 29
5.1 Um pouco sobre o Protocolo TCP/IP. ......................................................................... 30
5.2 Camada de Interface de Rede...................................................................................... 33
5.3 Camada de Rede (IP). .................................................................................................. 33
5.4 Camada de Aplicao. .................................................................................................. 33
5.5 Camada de Transporte. ............................................................................................... 34
5.6 O formato de um IP...................................................................................................... 35
5.6.1 Classes de IP. ........................................................................................................... 37
5.7 Intranet ......................................................................................................................... 38
5.8 Sockets ........................................................................................................................... 39
5.8.1 Primitivas bsicas de socket. ................................................................................... 42
6 SISTEMAS GERENCIADORES DE BANCO DE DADOS....................................... 43
6.2 Modelos de Dados ........................................................................................................ 45
12
6.2.1 Modelo Hierrquico................................................................................................ 45
6.2.2 Modelo em Rede..................................................................................................... 45
6.2.3 Modelo Relacional.................................................................................................. 46
6.2.4 Modelo Orientado Objetos ..................................................................................... 46
6.3 Arquiteturas de SGBDs................................................................................................ 47
6.4 Vantagens de se utilizar um banco de dados............................................................ 48
7 CORREIO ELETRNICO DESENVOLVIMENTO.................................................. 50
7.1 A Anlise de requisitos. .............................................................................................. 51
7.2 Servidor. ...................................................................................................................... 51
7.3 Dicionrio de dados .................................................................................................... 54
7.4. Aplicao cliente. ....................................................................................................... 55
7.4.1 Formulrio de Configurao................................................................................. 55
7.4.2 Formulrio de Acesso. .......................................................................................... 56
7.4.3 Formulrio Principal Gerenciamento. ............................................................... 58
7.4.4 Criando uma nova mensagem............................................................................... 60
7.4.5 Lendo as mensagens Recebidas............................................................................ 64
7.4.6 Salvando uma Mensagem em Disco..................................................................... 64
7.4.7 Abrindo um arquivo do Disco. ............................................................................. 65
7.4.8 Salvando uma Mensagem no servidor.................................................................. 66
7.4.9 Excluindo Mensagem do Servidor. ...................................................................... 67
7.4.10 Pesquisando usurio e sua localizao. ................................................................ 67
7.4.11 Alternando os Meus dados. .................................................................................. 68
7.5 Chat............................................................................................................................. 69
8 CONCLUSO................................................................................................................... 71
9 BIBLIOGRAFIA. ............................................................................................................. 72
ANEXOS ................................................................................................................................. 73
13
1. INTRODUO
O uso da Internet vem aumentando rapidamente nos ltimos anos, sendo altamente
usada em meios acadmicos e principalmente nas empresas. Com a popularizao da internet
os servios de Correio Eletrnico tambm se consolidaram como uma forma rpida e de baixo
custo de comunicao.
Atualmente, o domnio da informao faz diferena, ou seja, quem possuir acesso mais
rpido as informaes e souber como us-las, ter um diferencial competitivo. Fatos
relacionados ao domnio da informao vm ocorrendo com freqncia, onde o anseio por
tomadas de decises rpidas e eficazes crescente.
Estes fatos se devem ao crescente avano da tecnologia e a competio acirrada no
mercado de trabalho to globalizado. Fatos estes requerem uma comunicao rpida e segura
tanto para tomada de decises quanto para maior produtividade e diminuio de custos.
Assim, muitas empresas esto percebendo a importncia desta tecnologia para ajudar na
produtividade dos funcionrios, no tratamento de problemas crticos, na comunicao e em
tantas outras atividades do dia-a-dia corporativo.
Mensagens desnecessrias recebidas que dificultam o controle e podem sobrecarregar
o usurio e tambm o servidor, e a necessidade de linha telefnica ou uma outra forma de
conexo a internet, so algumas das limitaes que a maioria dos aplicativos de comunicao
possuem atualmente.
14
Com a utilizao do correio eletrnico em uma intranet, estas necessidades sero
supridas em grande parte. Desta forma, no necessrio estar conectado a internet para
funcionar, diminuindo assim, os custos com ligaes e tambm descongestionar as linhas
telefnicas, se for o caso.
Portanto, reintera-se a importncia do uso desta ferramenta como alternativa vivel no
processo de comunicao interna, utilizando a intranet, pois ela adapta-se as necessidades
locais e possibilita um acesso fcil e rpido as informaes desejadas e na troca de
mensagens.
15
2. OBJETIVOS GERAIS.
Este trabalho tem por objetivo desenvolver uma Ferramenta de Correio Eletrnico e
Chat para uma Intranet no ambiente Windows.
2.1 Objetivos especficos.
-Atravs de levantamento bibliogrfico, estudar formas de comunicao entre
computadores, especificamente redes.
- Definir uma ferramenta com as seguintes caractersticas:
- Ser de fcil acesso ao usurio.
- Armazenar as mensagens diretamente no servidor.
- Bloquear o envio de mensagens annimas.
- Permitir que o usurio filtre mensagens e eleja prioridades.
- Utilizar o cadastro de usurios do Windows para cadastro rpido.
- Possibilitar aos usurios a localizao de outros usurios logados na rede de forma
rpida e simples.
- Utilizar Sockets para comunicao, bem como o protocolo TCP/IP.
16
- Implementar um prottipo conforme caractersticas definidas anteriormente,
utilizando a estrutura de uma rede intranet.
17
3 PROCEDIMENTOS METODOLGICOS.
Primeiramente foi necessrio pesquisar bibliografias referentes a Protocolos de Rede,
Intranet, Correio Eletrnico, Sistemas Gerenciadores de Banco de Dados e assuntos relativos
ao projeto, a fim de obter o mximo de respostas para a concretizao do trabalho, juntamente
com pesquisas de ferramentas similares hoje existentes no mercado.
O estudo da forma de funcionamento do correio eletrnico foi baseado em pesquisas
bibliogrficas e principalmente em pesquisas feitas na Internet.
Por fim, foi redigido o trabalho com base em estudos e bibliografias dentro da
metodologia definida, e tambm as concluses.
A escolha da linguagem de programao para implementao levou em conta alguns
fatores como desempenho do sistema, facilidade de implementao e na instalao e
manuteno do programa. Com base nestes requisitos, foi escolhida a ferramenta de
desenvolvimento Borland Delphi Enterprise 7.0, juntamente com o banco de dados Firebird
1.5.
3.1 Estrutura do Trabalho.
Primeiramente apresentada uma viso de como surgiu a Internet e conseqentemente
18
o correio eletrnico, como foi a primeira mensagem enviada, o protocolo, como composta
uma mensagem em um correio eletrnico e tambm o que uma Intranet.
Em seguida, conceitos sobre Redes Locais, Intranet, um pouco sobre o protocolo
TCP/IP que utilizado na implementao deste sistema, juntamente com o componente de
comunicao Socket com suas principais caractersticas. As caractersticas bsicas de um
Sistema Gerenciador de Banco de Dados e suas principais caractersticas, tambm so
mencionadas.
Na parte de implementao da ferramenta so descritos os principais componentes
utilizados, o funcionamento, o diagrama de fluxo de dados e tambm como a ferramenta faz
para receber e enviar mensagens e como pode ser vistos nos anexos.
19
4 INTERNET E O CORREIO ELETRNICO.
A Internet a maior rede de computadores do mundo (o termo rede refere-se a um
grupo de computadores interligado com a finalidade de compartilhar informaes [MCF 95].
No importa o tipo do computador utilizado. Para que seja possvel conectar a rede, basta
observar a regra bsica de que todos os computadores devem falar a mesma lngua, ou seja,
todos devem estabelecer um padro de comunicao. Ou seja, a Internet para funcionar deve
respeitar um conjunto de padres estabelecidos para transmisso e recebimento de
informaes de uma rede a outra, possibilitando assim a comunicao entre inmeras redes
espalhadas).
A comunicao pode ocorrer sob as mais diversas formas, podendo ser com dados
puros, voz, vdeo ou ainda a unio de todos, porm cada vez necessria mais velocidade
para dar conta do alto volume de dados que iro trafegar pela rede.
A Internet se desenvolveu a partir de um experimento do Departamento de Defesa dos
Estados Unidos no final da dcada de 60, com o objetivo de interligar redes militares de
pesquisas [SHI 94].
Os pesquisadores receberam um projeto para trabalhar. A Advanced Research and
Projects Agency (ARPA), requisitou um sistema de rede que fosse descentralizado para que
no caso de uma guerra suas bases de dados no fossem totalmente atingidas e com isso a
comunicao no seria interrompida. Foi deste projeto que resultou o TCP/IP (Transmission
20
Control Protocol / Internet Protocol), que at hoje ainda serve como base para toda a Internet.
Assim, em 1969, foi criada a ARPANET - ARPAnetwork e em outubro do mesmo ano
foi enviada a primeira mensagem remotamente, inaugurando na prtica suas atividades.
Durante os anos seguintes, a ARPANET foi sendo ampliada com novos pontos nos
Estados Unidos, passando a incluir tambm universidades. Em 1971, surgiu o modelo
experimental do e-mail (o seu primeiro software veio em 1972), ampliando a utilidade da
Rede. J em 1973, foram criadas as primeiras conexes internacionais, interligando
computadores na Inglaterra e na Noruega.
Tambm surgiram outras redes paralelas que posteriormente viriam a se unir a
ARPANET, essa unio no significava em todos os casos o desaparecimento de alguma
dessas redes, pois uma das premissas da ARPANET era de que ela fosse capaz de comunicar
se com qualquer computador e/ou rede que houvesse. Essa premissa se mantm at hoje.
Em 1982, foi implementado o TCP/IP, protocolo padro da Rede. No ano seguinte,
toda a parte militar (que recebeu o nome de MILNET) foi separada da ARPANET. Em 1985,
surgiram os primeiros domnios (.edu, .org e .gov), logo aps a criao deste conceito.
Tambm nessa poca, comeou a ser usado o nome INTERNET para se referir ao conjunto de
redes liderado pela ARPANET. Depois da ciso com a parte militar e o uso j comum do
termo INTERNET, a ARPANET se esvaziou e deixou de existir oficialmente em 1990.
Em 1991, surgiu a WWW, liderando uma grande mudana nos hbitos e no perfil dos
usurios da INTERNET. Um grupo de cientistas do CERN - Laboratoire Europen pour la
Physique des Particules, decidiu tornar seu tempo de uso da Rede mais rpido, fcil e
produtivo. Para isso, desenvolveram e acabaram por criar, em 1991, o servio WWW. Na
poca era muito complicado e trabalhoso navegar na Internet. Somente programadores e
21
operadores tinham capacidade para usar a Rede e mesmo para eles isso era trabalhoso e
despendia tempo. Com a WWW, a tarefa de navegar tornou-se extremamente simples.
Endereamentos amigveis e visualizao clara e rpida possibilitaram ao leigo um acesso
antes restrito a especialistas.
Para navegar nesse novo sistema, foi criado um novo tipo de software, conhecido
como browser ou navegador. Os principais servios que podem ser utilizados atravs da
Internet so: Web (pginas web), E-mail (correio eletrnico), (conversas em tempo real), FTP
(transferncia de arquivos) entre outros.
4.1 Correio Eletrnico.
Correio eletrnico (ou e-mail) apenas uma mensagem que redigida, enviada e lida
eletronicamente. Como um correio comum, voc escreve uma mensagem e a coloca no
correio, o servio postal ento envia sua mensagem ao destinatrio que l sua mensagem.
Assim, o correio eletrnico funciona basicamente da mesma maneira, exceto que tudo isso
acontece eletronicamente.
O e-mail foi descoberto em 1971 por um engenheiro de computao chamado Ray
Tomlinson, que trabalhava na Bolt Bearanek e Newman (BBN) a mesma empresa que foi
contratada pelo Departamento de Defesa dos Estados Unidos para implantar o ARPANET,
quando foi criada a rede, havia apenas 15 computadores interligados atravs de um programa
chamado SNDMSG, que j tinha princpios bsicos do e-mail: envio de mensagem para uma
caixa de outra pessoa, ou no mais de que um arquivo texto.
O SNDMSG funcionava unicamente no mbito local, e ento foi decidido adapt-lo
para poder trabalhar em ns de rede, para distinguir os endereos locais dos externos,
22
utilizando o smbolo @ entre o nome do usurrio e o nome do computador destino, criando
assim, o maior smbolo da internet.
O Primeiro e-mail enviado na histria foi um teste de Tomlinson, seu texto foi algo
parecido com isso QWERTYIOP a mensagem foi enviada por Tomlinson para ele mesmo
atravs da ARPANET.
4.1.1 Prs e contras do Correio Eletrnico.
Como o correio eletrnico era uma coisa nova, surgiram os prs e os contras
mostrados a seguir:
Os pros:
O correio eletrnico fcil, a parte mais difcil conectar-se a internet.
rpido, no importa onde voc esteja enviando sua mensagem, seja do outro lado da
cidade ou do outro lado do planeta.
As mensagens de correio eletrnico so facilmente armazenadas.
praticamente universal, no somente milhes de pessoas na internet o utilizam,
como tambm qualquer sistema de correio eletrnico do mundo possui pontes eletrnicas
embutidas (gateway).
Os contras:
O correio eletrnico interpessoal.
Spam Mensagens no solicitadas.
23
Pode tomar conta de sua vida, medida que voc fica mais envolvido no mundo do
correio eletrnico, naturalmente comear receber mais correspondncias, e trocando
informaes com pessoas s vezes completamente desconhecidas.
4.1.2 Anatomia de uma Mensagem.
Uma mensagem eletrnica basicamente possui trs partes:
O cabealho.
O corpo.
A assinatura.
A seguir apresentada uma mensagem de correio eletrnico e descrita a sua estrutura.
Data: Ter, 12 Set 02 15:25
Destinatrio: [email protected]
Emissor: [email protected] (Luciano Buzzatto)
Titulo: Trabalho Projeto de Concluso do Curso.
CC: [email protected]
Mensagem: .............................
Assinatura:
Exemplo bsico de como composta uma mensagem de e-mail.
4.1.3 O Cabealho.
As primeiras linhas constituem o cabealho e representam a informao vital da
mensagem, h muitas informaes que no importam para o usurio, mas so de vital
importncia para a ferramenta de correio eletrnico.
Os campos que normalmente so teis no cabealho so o endereo do emissor, o
endereo do destinatrio, que na verdade o endereo de quem ir receber a mensagem,
endereo de cpia da mensagem, data e hora do envio da mensagem, e o ttulo da mensagem.
24
Alm disso, so includas outras informaes a respeito dos equipamentos que
recebem a mensagem durante o trajeto, um identificador da mensagem (message ID) que
identifica o remetente e outros dados.
Data: Esta a data e horrio em que a mensagem foi enviada.
Destinatrio: Este o endereo eletrnico do destinatrio.
Emissor: Este o endereo eletrnico e normalmente o nome verdadeiro da pessoa
que est enviando a mensagem.
Ttulo: uma descrio do que trata a mensagem.
CC: Esta linha indica os endereos eletrnicos das pessoas que devem receber cpias
da mensagem.
4.1.4 Identificador de Mensagens.
O Identificador de mensagens (message ID) no til para a maioria dos usurios,
mas, somente para o software de correio eletrnico.
Pode-se ver a grande quantidade de dados disponveis no cabealho de uma
mensagem, mas a maioria destas informaes apenas necessria para o software de Correio
Eletrnico.
4.1.5 O corpo.
Em algumas redes de computadores o corpo da mensagem deve ser limitado. Tanto o
sistema de correio eletrnico, quanto o software de rede recusam sua mensagem se ela for
muito longa.
25
4.1.6 A Assinatura.
A assinatura na mensagem o que aparece nas ltimas linhas. Seu propsito fazer
com que os usurios que recebam a mensagem fiquem sabendo um pouco mais sobre voc.
Apesar das assinaturas serem opcionais a maioria dos usurios as utiliza, pois elas do
um toque mais amigvel s correspondncias.
4.2 Como Funciona um Correio Eletrnico.
O Correio eletrnico, em muitos sentidos assemelha-se ao correio convencional com a
grande vantagem se de ser muito mais gil, rpido e econmico. O Principio bsico do correio
convencional mantido tambm no correio eletrnico, que descrito como armazenar e
despachar [SHI 94 ].
Inicialmente cada usurio de uma caixa de correio eletrnico atribudo um endereo
eletrnico, que ser usado para enviar e receber as mensagens.
O endereo basicamente composto por duas partes, uma que fica a esquerda do
smbolo @ (arroba) que a parte do endereo de quem envia a mensagem, e a outra parte
aps o smbolo @ parte de onde ser originou a mensagem. Como no exemplo abaixo:
[email protected]
A primeira parte: luciano est se referindo ao usurio propriamente dito, e segunda
parte yahoo.com.br indica o provedor ou a localizao da caixa postal, que informa o tipo de
organizao que est hospedada a conta, o br correspondente ao pas ou a um domnio
26
geogrfico da caixa postal do usurio.
4.2.1 Como trafega uma mensagem.
Quando o usurio escreve um e-mail em seu computador e coloca o endereo do
destinatrio criado um envelope com o nome do destinatrio eletronicamente. Este envelope
oferece a vrios computadores da rede as informaes para que eles saibam o destino do e-
mail.
Para chegar ao seu destino, a mensagem far vrias paradas intermedirias at chegar
ao seu destino. A cada parada, outro computador armazena temporariamente a mensagem
enquanto descobre o melhor caminho para retransmiti-la para o destino final ou para outro
servidor de correio eletrnico, que far o mesmo processo at que mensagem chegue ao seu
destinatrio.
Mesmo com todas essas paradas, o servio eletrnico bastante eficiente devido a
grande velocidade em que as mensagens trafegam. Quase que todos os computadores usam o
mesmo mecanismo de transporte de mensagens o Simple Mail Transfer Protocol (Protocolo
de Transporte de Postagem Simples), SMTP.
4.2.2 Simple Mail Transfer Protocol SMTP
Inicialmente o servidor de SMTP fica esperando a comunicao atravs do protocolo
TCP na porta 25.
Caractersticas bsicas:
27
orientado a conexo, sendo transmitido sobre TCP.
A comunicao entre Emissor-SMTP e Receptor-SMTP feita atravs de comandos
formados por seqncias de caracteres no padro ASCII.
Apenas algum dos comandos tem implementao obrigatria em um servidor bsico:
HELO, MAIL, RCPT, DATA, NOOP, QUIT e RSET.
Para cada comando enviado do Emissor-SMTP para o Receptor-SMTP ocorrer uma
resposta do Receptor, atravs de um Cdigo Numrico de Resposta.
O funcionamento bsico do SMTP primeiro estabelecido a conexo entre Emissor-
SMTP e Receptor-SMTP, onde este ltimo pode ser o destino final da mensagem ou apenas
um retransmissor. O Emissor-SMTP envia a identificao do remetente da mensagem, que o
Receptor-SMTP responde com um ok, aps, identificar o destinatrio da mensagem, ento, o
Receptor-SMTP verifica se este existe e retorna o cdigo apropriado. Estando identificado o
destinatrio o Emissor-SMTP comea o envio da mensagem propriamente dita. Ao seu
trmino, o Emissor-SMTP envia uma seqncia especial de finalizao. Ento, a conexo
entre o Emissor-SMTP e o Receptor-SMTP desativada.
Na figura 01 mostrado como trafega uma mensagem usando padro SMTP.
Figura. 01 Exemplo como trafega uma mensagem.
28
4.2.3 Protocolo IMAP
O protocolo IMAP foi originalmente desenvolvido na Universidade de Stanford em
1986. Trata-se de um mtodo de acesso a mensagens eletrnicas armazenadas em um servidor
local ou remoto. IMAP quer dizer Internet Message Access Protocol.
Uma caracterstica importante do IMAP permitir que a manipulao de mensagens e
pastas seja feita como se estivessem no computador local.
29
5- REDES LOCAIS.
As comunicaes corporativas nas ltimas dcadas deram um salto tecnolgico e
continuam a se desenvolver rapidamente.
Tecnologias e equipamentos so substitudos rapidamente por outros com maior
capacidade de integrao e menor custo.
Isto passa a ser uma tranqilidade para o usurio final, que passa a usufruir tecnologias
complexas e de operaes simples, alm de remotas possibilidades de falhas.
As redes locais surgiram com a necessidade de interligar micros que se proliferavam
operando independente uns dos outros.
A interligao destes equipamentos em rede passou a permitir o compartilhamento de
recursos como impressoras e principalmente as bases de dados que passaram a ser nica e no
mais replicada dando maior segurana aos usurios da informao.
Para que se de a troca de informaes entre vrios componentes de uma rede local de
forma ordenada e eficaz, se estabelece um nmero de protocolos que defina regras a serem
seguidas quando da comunicao entre os componentes [MOU 86]
Na figura 02 mostra um modelo de uma rede local.
30
Figura. 02 Modelo de Rede Local.
5.1 Um pouco sobre o Protocolo TCP/IP.
Para que os computadores de uma rede possam trocar informaes necessrio que
todos adotem as mesmas regras para o envio e o recebimento de informaes. Este conjunto
de regras conhecido como Protocolo de comunicao. Falando de outra maneira podemos
afirmar: "Para que os computadores de uma rede possam trocar informaes entre si
necessrio que todos estejam utilizando o mesmo protocolo". No protocolo de comunicao
esto definidas todas as regras necessrias para que o computador de destino entenda" as
informaes no formato que foram enviadas pelo computador de origem. Dois computadores
com protocolos diferentes instalados, no sero capazes de estabelecer uma comunicao e
trocar informaes [JUL 04].
A arquitetura TCP/IP surgiu do Departamento de Defesa do governo dos Estados
Unidos da Amrica, com objetivo principal de manter conectado mesmo que, apenas em parte
seus equipamento e bases de dados em caso de guerra.
31
A ARPANET surgiu como uma rede que permaneceria intacta caso um dos servidores
perdesse a conexo, e para isso, ela necessitava de protocolos que assegurassem tais
funcionalidades trazendo confiabilidade, flexibilidade e que fosse fcil de implementar. Foi
desenvolvida ento, a arquitetura TCP/IP.
O modelo de referncia Open systems interconection (OSI) foi desenvolvido pela ISO
como um modelo para a arquitetura de um protocolo de comunicao de dados entre dois
computadores. Ele composto de sete camadas apresentadas abaixo.
7 - Aplicao:
Camada que fornece aos usurios acesso ao ambiente OSI e prov sistemas distribudos de
informao.
6 Apresentao:
Camada responsvel por prover independncia aos processos de aplicao das diferenas
na representao dos dados (sintaxe).
5 Sesso:
Camada que prov a estrutura de controle para a comunicao entre as aplicaes.
Estabelece, gerencia e termina conexes (sesses) entre aplicaes.
4 Transporte:
Camada responsvel pela transferncia de dados entre dois pontos de forma transparente e
confivel com funes como controle de fluxo e correo de erro fim a fim.
3 Rede:
Camada que fornece para as camadas superiores independncia das tecnologias de
transmisso e comutao usadas para conectar os sistemas. Responsvel por estabelecer,
manter e terminar conexes.
2- Enlace de dados :
Camada responsvel pela transmisso confivel de informao atravs do enlace fsico.
32
Envia blocos de dados (frames) com o necessrio controle de erro e de fluxo.
1 Fsica:
Camada responsvel pela transmisso de uma seqncia de bits em um meio fsico.
Trata das caractersticas mecnicas, eltricas, funcionais e procedurais para acessar o
meio fsico.
O modelo TCP/IP quando comparado com o modelo OSI, tem duas camadas que se
formam a partir da fuso de algumas camadas, elas so: as camadas de Aplicao (Aplicao,
Apresentao e Sesso) e Rede (Link de dados e Fsica).
Veja na ilustrao abaixo a comparao:
Figura. 03 Comparao Modelo OSI TCP/IP
O modelo TCP/IP constitudo basicamente por 4 camadas: a camada de interface de
rede, a camada de rede (Internet), a camada de transporte e a camada de aplicao.
Tanto a camada de aplicao quanto camada de interface de rede no possuem uma
norma definida, devendo a camada de aplicao utilizar servios da camada de transporte, e a
camada de interface de rede prove a interface dos diversos tipos de rede com o protocolo
promovendo em conseqncia a inter-operao entre as diversas arquiteturas de rede -
Ethernet, Token Ring, ATM,etc.
33
5.2 Camada de Interface de Rede.
Tambm chamada camada de abstrao de hardware, tem como funo principal
interface do modelo TCP/IP com os diversos tipos de redes (X.25, ATM, FDDI, Ethernet,
Token Ring, Frame Relay, sistema de conexo ponto-a-ponto SLIP, etc.).
Como h uma grande variedade de tecnologias de rede, que utilizam diferentes
velocidades, protocolos, meios transmisso, esta camada no normatizada pelo modelo, o
que prov uma das grandes virtudes do modelo TCP/IP: a possibilidade de interconexo e
inter-operao de redes heterogneas.
5.3 Camada de Rede (IP).
A camada de rede a primeira (normatizada) do modelo. Tambm conhecida como
camada Internet, responsvel pelo endereamento, roteamento dos pacotes, controle de
envio e recepo (erros, bufferizao, fragmentao, seqncia, reconhecimento, etc.)
Dentre os protocolos da Camada de Rede, destaca-se inicialmente o IP (Internet
Protocol), alm do ARP, ICMP, RARP e dos protocolos de roteamento (RIP, IGP, OSPF,
Hello, EGP e GGP).
5.4 Camada de Aplicao.
formada pelos protocolos utilizados pelas diversas aplicaes do modelo TCP/IP.
Esta camada no possui um padro comum. O padro estabelece-se para cada aplicao. Isto
34
, o FTP possui seu prprio protocolo, o TELNET possui o seu prprio, bem como o SNMP,
GOPHER, DNS e assim por diante.
na camada de aplicao que se estabelece o tratamento das diferenas entre
representao de formato de dados.
O endereamento da aplicao na rede provido atravs da utilizao de portas para
comunicao com a camada de transporte. Para cada aplicao existe uma porta
predeterminada.
5.5 Camada de Transporte.
A camada de transporte uma camada fim-a-fim, isto , uma entidade desta camada s
se comunica com a sua entidade-par do host destinatrio. nesta camada que se faz o controle
da conversao entre as aplicaes intercomunicadas da rede.
A camada de transporte utiliza dois protocolos: o TCP e o UDP. O primeiro
orientado conexo e o segundo no orientado conexo. Ambos os protocolos podem
servir a mais de uma aplicao simultaneamente.
O acesso das aplicaes camada de transporte feito atravs de portas que recebem
um nmero inteiro para cada tipo de aplicao, podendo tambm tais portas ser criadas ao
passo em que novas necessidades vo surgindo com o desenvolvimento de novas aplicaes.
A maneira como a camada de transporte transmite dados das vrias aplicaes
simultneas por intermdio da multiplexao, onde vrias mensagens so repassadas para a
camada de rede (especificamente ao protocolo IP) que se encarregar de empacot-las e
mandar para uma ou mais interface de rede. Chegando ao destinatrio o protocolo IP repassa
35
para a camada de transporte que demultiplexa para as portas (aplicaes) especficas.
O conjunto de protocolos da Internet TCP/IP o padro mundial para interconexo de
sistemas. Nenhum outro conjunto de protocolos proporcional tanta interoperabilidade e
abrange tantos fornecedores.
Alm das conexes Internet, muitas organizaes empregam o TCP/IP em suas redes
Internas, uma rede privativa que utiliza o TCP/IP conhecida como Intranet, embora a
maioria das empresas no divulgue informaes sobre as suas entrantes, algumas so amplas.
Por exemplo, empresas dos setores aeroespacial, automotivo, eletrnico, de hotelaria,
petroleiro, de imprensa, farmacutico e outros possuem intranets que incluem sites em
diversos pases. Tais empresas usam o TCP/IP para conectar as suas redes remotas e locais.
O software TCP/IP normalmente reside no sistema operacional, onde pode ser compartilhado
por todos os programas executados na maquina, ou seja, o sistema operacional contm uma s
copia do cdigo de um protocolo como o TCP/IP e vrios programas podem chamar tal
cdigo. Naturalmente, cada chamada precisa funcionar com independncia de modo que os
dados transferidos por um outro programa no afetem os dados transferidos por outro [DEC
99].
Os sistemas operacionais oferecem diversas abstraes necessrias ao entendimento da
implementao dos protocolos TCP/IP. O conceito principal talvez seja o de processo ou
encadeamento de controle (thread of control) [DEC 99].
5.6 O formato de um IP.
Uma parte do Nmero IP (1, 2 ou 3 dos 4 nmeros) a identificao da rede, a outra
parte a identificao da mquina dentro da rede. O que define quantos dos quatro nmeros
fazem parte da identificao da rede e quantos fazem parte da identificao da mquina a
36
mscara de sub-rede (subnet mask).
Nmero IP: 10.200.150.1
Subrede: 255.255.255.0
As trs primeiras partes da mscara de sub-rede (subnet) iguais a 255 indicam que os
trs primeiros nmeros representam a identificao da rede e o ltimo nmero a
identificao do equipamento dentro da rede. Para o nosso exemplo teramos a rede:
10.200.150, ou seja, todos os equipamentos do nosso exemplo fazem parte da rede 10.200.150
ou, em outras palavras, o nmero IP de todos os equipamentos da rede comeam com
10.200.150. [JUL 04].
O protocolo TCP responsvel pelo transporte dos dados e executa importantes
funes para garantir que esses dados cheguem de forma integra.
O TCP baseia-se na comunicao ponto a ponto entre dois hosts de rede. O TCP
recebe os dados de programas e processa esses dados como um fluxo de bytes. Os bytes so
agrupados em segmentos que o TCP numera e seqncia para entrega. Estes segmentos so
mais conhecidos como pacotes [JUL 04]
Antes que dois TCP possam trocar dados, devem primeiro estabelecer uma sesso
entre si. Dever ser iniciada uma sesso TCP atravs de um processo conhecido como um tree-
way handshake (algo como Um Aperto de Mo Triplo). Esse processo sincroniza os nmeros
de seqncia e oferece informaes de controle necessrias para estabelecer uma conexo
virtual entre os dois hosts.
apresentado na figura 04 um modelo de configurao de uma rede local, baseado no
protocolo TCP/IP.
37
Figura. 04 Exemplo de uma rede baseada no protocolo TCP/IP
5.6.1 Classes de IP.
Classe A: Esta classe foi definida com tendo o primeiro bit (dos 32 bits que formam
um nmero IP) do nmero IP como sendo igual a zero. Com isso o primeiro nmero IP
somente poder variar de 1 at 126 (na prtica at 127, mas o 127 um nmero IP reservado).
Classe B: Esta classe foi definida com tendo os dois primeiros bits do nmero IP como
sendo sempre iguais a 1 e 0. Com isso o primeiro nmero do endereo IP somente poder
variar de 128 at 191. Como o segundo bit sempre 0, o valor do segundo bit que 64 nunca
somado para o primeiro nmero IP, com isso o valor mximo fica em: 255-64, que o 191.
Classe C: Esta classe foi definida com tendo os trs primeiros bits do nmero IP como
sendo sempre iguais a 1, 1 e 0. Com isso o primeiro nmero do endereo IP somente poder
variar de 192 at 223. Como o terceiro bit sempre 0, o valor do terceiro bit, que 32, nunca
somado para o primeiro nmero IP. Com isso o valor mximo fica em: 255-32, que 223.
Classe D: Esta classe foi definida com tendo os quatro primeiros bits do nmero IP
38
como sendo sempre iguais a 1, 1, 1 e 0. A classe D uma classe especial, reservada para os
chamados endereos de Multicast.
Classe E: Esta classe foi definida com tendo os quatro primeiros bits do nmero IP
como sendo sempre iguais a 1, 1, 1 e 1. A classe E uma classe especial e est reservada para
uso futuro.
5.7 Intranet
O Termo Intranet comeou a ser usado em meados de 1995 por fornecedores de
produtos de rede para se referirem ao uso dentro das empresas privadas de tecnologias
projetadas para comunicao por computador entre empresas. Em outras palavras, uma
intranet consiste em uma rede privada de computadores que se baseia nos padres de
comunicao da internet pblica [BAN 97].
A Intranet pode ser vista como uma Internet privada utilizando o mesmo protocolo e
padres da Internet pblica. a mais nova plataforma corporativa desde a introduo de
computadores pessoais no ambiente dos negcios.
a conectividade da fora de trabalho de uma corporao, que conecta pessoas com
pessoas e pessoas com a informao, normalmente aumenta a produtividade, economiza
tempo e reduz custos e fornece informaes atualizadas.
Permite que "pginas" de informao contendo diversos tipos de dados: texto,
grficos, udio, vdeo, bases de dados sejam compartilhadas atravs de qualquer rede baseada
nos protocolos TCP/IP.
O correio eletrnico a mais simples das tcnicas de envio/recebimento de mensagens
39
nas empresas modernas, e por isso mesmo tambm uma das mais eficientes e douradoras.
Parte das vantagens do sistema provm da capacidade de entrar em contato com qualquer
pessoa da rede.
O uso de informaes para tomar decises um aspecto essencial do desempenho
empresarial, mas uma vez tomadas s decises, o desempenho depende da ao. Nesta etapa,
a intranet oferece muitos benefcios.
Na figura abaixo apresentado um modelo de intranet.
Figura 05 Exemplo de uma Intranet.
5.8 Sockets
Sockets so estruturas que permitem que funes de software se interconectem. O
conceito o mesmo de um soquete (eltrico, telefnico), que serve para interconectar
elementos diferentes.
A base da comunicao na Internet se da atravs do protocolo TCP/IP em conjunto
com Sockets. Os Sockets so responsveis pelo envio, recebimento e direcionamento dos
dados que trafegam de uma ponta a outra da conexo entre microcomputadores [LEC 01].
40
Os endereos de porta de 0 a 1023 so reservados para aplicaes especiais como
Telnet porta 23 Os endereos de porta maiores que 1023 so reservados para as aplicaes dos
usurios normais [INI 04].
Cada programa, seja ele cliente ou servidor, sempre abre uma porta de comunicao
no Socket, atravs desta porta que os softwares se comunicam remotamente, mas para que a
conexo se estabelecida, deve-se conhecer o endereo IP e o nmero da porta, internamente
no Socket existe um recurso que controla o Handle para cada conexo.
Seu uso deixa a aplicao cliente bem mais leve. Como TCP/IP est presente na
maioria dos sistema operacionais.
atravs deste handle que o programa recebe e envia dados para o socket e este trata
de encaminhar as mensagens para o destinatrio.
O Socket gerencia os Handle, ligando-os, internamente, a endereos e portas
especficas quando se estabelece a conexo.
Uma conexo entre um Cliente e um Servidor gera apenas um Handle em cada uma
das pontas, porem, o Servidor pode possuir vrias conexes de clientes, todas elas pelo
mesmo endereo IP e pela mesma porta, mas com Handles diferentes. Esse recurso faz com
que o Socket saiba exatamente para quem enviar as mensagens e de quem as recebe.
Com Sockets possvel enviar e receber mensagem de duas formas texto simples ou
binrio.
O formato de texto simples muito utilizado para implementar protocolos, alguns
protocolos, tais como HTTP, FTP, SMTP, POP etc, utilizam transferncia simples de texto
entre servidores e clientes. A transmisso na forma binria de dados na forma binria j no
41
requer necessariamente um protocolo para tal [LEC 01].
Vejamos como exemplo, o protocolo SMTP. Este protocolo trabalha com poucos
comandos e fcil de entender. Alguns comandos bsicos so:
MAIL FROM: < e-mail do emitente > <ENTER>
RCPT TO: <e-mail do receptor > <ENTER para cada receptor>
DATA <ENTER>
[Cabealho ]<ENTER para cada linha do cabealho >
[Salto de linha] < ENTER >
[Texto da mensagem ] < ENTER para cada linha do texto >
Felizmente o Delphi j disponibiliza vrios componentes que lidam diretamente com
Sockets justamente para facilitar o processo de conexo, envio e recebimento de dados e
tratamento de erros, esses so os principais pontos que todas as aplicaes devem possuir
quando trabalham com comunicao via rede TCP/IP.
Figura 06 Palheta DataSnap Delphi 7
Na figura 06 apresentada a palheta DataSnap do Delphi na qual se encontra um dos
principais componentes de socket utilizado na implementao da ferramenta.
Sero dados mais detalhes sobre os componentes e suas principais funes no captulo
da fase de implementao.
42
5.8.1 Primitivas bsicas de socket.
a) Socket( ) Cria um novo ponto de comunicao
b) bind( ) Associa um endereo ao socket (porta)
c) listen( ) Informa disposio para aceitar conexes;
d) accept( ) Bloqueia at a chegada de um pedido de conexo
e) connect( ) Tenta estabelecer uma conexo
f) send( ) Envia dados atravs da conexo
g) receive( ) Recebe dados da conexo
h) close( ) Libera a conexo
A comunicao entre as mquinas da rede possibilitada atravs de primitivas de
acesso das camadas UDP e TCP. Antes de iniciar o estabelecimento da conexo, so
executadas as primitivas socket, que cria um ponto terminal de comunicao, e bind que
registra o endereo da aplicao (nmero da porta). Para estabelecer a conexo (com o
protocolo TCP), a aplicao servidora executa a primitiva listen enquanto que a cliente
executa connect. A aplicao servidora usa o accept para receber e estabelecer a conexo.
43
6 SISTEMAS GERENCIADORES DE BANCO DE DADOS
Sistema Gerenciador de banco de dados basicamente um sistema de manuteno de
registros por computador ou seja, um sistema cujo objetivo global manter as informaes
e torn-las disponveis quando solicitadas. Em sntese, um sistema de gerenciamento de banco
de dados (SGBD), consiste em uma coleo de dados inter-relacionados, e em uma coleo de
programas para prover acesso a esses dados, de forma interativa (SQL ou suas derivaes), ou
atravs de drivers de linguagens de programao e outros SGBDs.
A meta bsica de um SGBD proporcionar um ambiente conveniente e eficiente para
recuperao de armazenamento de informaes [KOR 99].
Um sistema de banco de dados projetado para armazenar grandes volumes de
informaes. O gerenciamento de informaes implica a definio das estruturas de
armazenamento e o fornecimento de mecanismos para sua manipulao.
Alm disso, um sistema de banco de dados, precisa proporcionar segurana ao
armazenamento de informaes diante de falhas os sistema ou acesso no autorizado.
Existem dois nveis de independncia de dados: fsico e lgico. O esquema do banco
de dados determinado por um conjunto de definies que so expressas pela linguagem de
dados (Linguagem de definio dos dados - DDL).
O comando DDL compilado um conjunto de tabelas armazenadas em um arquivo
44
especial chamando dicionrio de dados.
Uma linguagem de manipulao de dados (DML) uma linguagem que habilita o
acesso e manipula os dados do usurio.
Vrias caractersticas distinguem a abordagem database da abordagem de programao
com arquivos. No caso dos arquivos:
a) cada usurio define os arquivos quando necessrios;
b) repetio de informaes;
c) desperdcio de memria e perda de tempo de manuteno.
No caso dos bancos de dados:
Um nico repositrio de dados definido e acessado por vrios usurios.
Na natureza autodescritiva do Banco de Dados:.
Separao entre programas e dados (ABSTRAO DE DADOS): No processamento
de arquivos, arquivos de dados e programas esto juntos (qualquer alterao nos dados tem
que alterar os programas).
Se estiver em um Banco Dados no haver a necessidade (independncia de programa-
dado). Por exemplo, se houver a necessidade de aumentar um campo nos registros de
estudantes, se for usando Bando Dados no haver a necessidade de alterar nenhum programa.
Um SGBD prov aos usurios uma representao conceitual que esconde como os dados so
armazenados e como as operaes so implementadas. Um modelo de dados um tipo de
abstrao de dados que usado para prover esta representao conceitual.
SUPORTE A MLTIPLAS VISES DE DADOS: Um banco de dados tem mltiplos
45
usurios e estes podem requerer diferentes vises do mesmo banco de dados. Pode se um
subconjunto ou pode conter dados virtuais que podem ser derivados.
COMPARTILHAMENTO DE DADOS E TRANSAES MULTI USURIOS:
essencial que os dados (de mltiplas aplicaes) estejam integradas e mantidas em um nico
banco de dados. O SGBD deve incluir software concorrente e as transaes concorrentes tm
que ser corretas. Estas so chamadas de OLTP (on-line transaction processing).
6.2 Modelos de Dados
6.2.1 Modelo Hierrquico
o primeiro reconhecido como modelo de dados. Foi desenvolvida devido
consolidao dos discos de armazenamento endereveis, sua estrutura utiliza as organizaes
de endereamento fsicos dos discos.
Os dados esto estruturados em hierarquias ou rvores. Os ns das hierarquias contm
ocorrncias de registros, onde cada registro uma coleo de campos (atributos) cada um
contendo apenas uma informao. O registro que em uma hierarquia precede outros, designa-
se registro-pai dos outros registros que so chamados de registros-filhos.
6.2.2 - Modelo em Rede
Aparece como uma extenso do modelo hierrquico. Elimina o conceito de hierarquia
e permite que um mesmo registro esteja envolvido em vrias associaes. No modelo em rede
os registros esto organizados em grafos.
46
6.2.3 - Modelo Relacional
O modelo relacional apareceu devido a seguintes necessidades: aumentar a
independncia de dados nos sistemas gerenciadores de banco de dados; prover um conjunto
de funes apoiadas em lgebra relacional para armazenamento e recuperao de dados.
O modelo relacional resultou de um estudo terico realizado, tendo por base a teoria
dos conjuntos e lgebra relacional.
O modelo foi apresentado num artigo publicado em 1970, mas que s nos anos 80, foi
implementado. O Modelo relacional revelou-se ser o mais flexvel e adequado ao solucionar
os vrios problemas que se colocam ao nvel da concepo e implementao da base de
dados. A estrutura fundamental do modelo relacional a relao. Uma relao constituda
por um ou mais atributos (campos), que traduzem o tipo de dados a armazenar. Cada instncia
do esquema (linha), designa-se por tupla (registro).
O modelo relacional no tem caminhos pr-definidos para acessar dados como no
modelo de redes ou hierrquicos. O modelo relacional implementa estruturas de dados
organizadas em relaes (tabelas). Porm para trabalhar com essas tabelas algumas restries
tiveram que ser impostas para evitar aspectos indesejveis no modelo relacional tais como:
Repetio de informao, Incapacidade de representar parte da informao e perda de
informao. Essas restries so : integridade referencial, chaves, integridade de junes de
relaes.
6.2.4 Modelo Orientado Objetos
Os bancos de dados orientados a objeto, comearam a se tornar comercialmente
47
viveis em meados de 1980. Eles comearam a ser desenvolvidos em funo dos limites de
armazenamento e representaes semntica dos modelos relacionais. Alguns exemplos so os
sistemas de informaes geogrficas (SIG), os sistemas CAD e CAM. Esses sistemas so
mais facilmente construdos usando tipos complexos de dados. A habilidade para criar os
tipos de dados necessrios uma caracterstica da linguagens de programao orientada a
objetos.
6.3 Arquiteturas de SGBDs
Plataformas centralizadas: Na arquitetura centralizada, existe um computador com
grande capacidade de processamento que o hospedeiro do SGBD e emuladores para os
vrios aplicativos. Esta arquitetura tem como principal vantagem a segurana em poder
manipular grande volume de dados com muitos usurios. Sua principal desvantagem est no
fato de se ter alto custo, pois se deve ter ambiente especial para mainframes e solues
centralizadas.
Sistemas de Computador Pessoal - PC. Os computadores pessoais trabalham em
sistema stand-alone, ou seja fazem seus processamentos sozinhos. No comeo esse
processamento era bastante limitado, porm com a evoluo do hardware temos hoje PCs com
grande capacidade de processamento. Eles utilizam o padro Xbase e quando se trata de
SGBDs funcionam como hospedeiros e terminais, desta maneira possuem um nico aplicativo
a ser executado na mquina. A principal vantagem desta arquitetura a simplicidade.
Banco de Dados Cliente-Servidor. Na arquitetura Cliente-Servidor o cliente
(front_end) executa as tarefas do aplicativo, ou seja fornece a interface com o usurio (tela, e
processamento de entrada e sada). O servidor (back_end) executa as consultas no e retorna os
resultados ao cliente. Apesar de ser uma arquitetura bastante popular, para poder implement-
48
la so necessrias solues de softwares sofisticados que possibilitem: tratamento de
transaes, confirmaes de transaes (commits), desfazer uma transao (rollbacks),
linguagens de consultas (stored procedures) e gatilhos (triggers). A principal vantagem desta
arquitetura dividir o processamento entre dois sistemas reduzindo o trfego de dados na
rede.
Banco de Dados Distribudos (N camadas). Nesta arquitetura a informao esta
distribuda em diversos servidores. Cada servidor atua como no sistema cliente-servidor,
porm as consultas oriundas dos aplicativos so feitas para qualquer servidor indistintamente.
Caso a informao solicitada seja mantida por outro servidor ou servidores, o sistema
encarrega-se de obter a informao necessria, de maneira transparente para o aplicativo, que
passa a atuar consultando a rede, independente de conhecer seus servidores. Exemplos tpicos
so bases de dados corporativas, em que o volume de informao muito grande e deve ser
distribudo por diversos servidores. Porm no dependente de aspectos lgicos de carga de
acesso aos dados, ou base de dados fracamente acopladas, em que uma informao solicitada
vai sendo coletada numa propagao da consulta numa cadeia de servidores. A caracterstica
bsica a existncia de diversos programas aplicativos consultando a rede para acessar os
dados necessrios, sem o conhecimento explcito de quais servidores dispem desses dados.
6.4 Vantagens de se utilizar um banco de dados
Reduo ou eliminao de redundncias - Possibilita a eliminao de dados
privativos de cada sistema. Os dados, que eventualmente so comuns a mais de um sistema,
so compartilhados por eles, permitindo o acesso a uma nica informao sendo consultada
por vrios sistemas.
Eliminao de inconsistncias - Atravs do armazenamento da informao em um
49
nico local com acesso descentralizado e, sendo compartilhada a vrios sistemas, os usurios
estaro utilizando uma informao confivel. A inconsistncia ocorre quando um mesmo
campo tem valores diferentes em sistemas diferentes.
Compartilhamento dos Dados - Permite a utilizao simultnea e segura de um
dado.
Restries de segurana - Define para cada usurio o nvel de acesso a ele concedido
(leitura, leitura e gravao ou sem acesso) ao arquivo e/ou campo.
Padronizao dos dados - Permite que os campos armazenados na base de dados
sejam padronizados segundo um determinado formato de armazenamento.
Manuteno de integridade - Exige que o contedo dos dados armazenados no
Banco de Dados possuam valores coerentes ao objetivo do campo.
Independncia dos dados - Representa a forma fsica de armazenamento dos dados
no Banco de Dados e a recuperao das informaes pelos programas de aplicao.
50
7 CORREIO ELETRNICO DESENVOLVIMENTO
A ferramenta de correio eletrnico foi implementada utilizando o Borland Delphi
Enterprise 7.0, pois a mesma ferramenta dispe de componentes visuais para acessos a vrios
servios mostrados a seguir, utilizando o seguinte fluxo de funcionamento.
Figura 7 Diagrama de fluxo de funcionamento da ferramenta.
51
7.1 A Anlise de requisitos.
A ferramenta dever satisfazer alguns requisitos:
a) possibilidade de ler as mensagens diretamente no servidor;
b) nada deve ser armazenado localmente, onde o usurio fez o acesso;
c) a ferramenta deve proporcionar rapidez nas informaes;
d) oferecer a opo de gravar a mensagem em disco, para posterior leitura;
f) no poder enviar mensagens annimas ou com endereos falsos;
g) permitir o uso de filtros e prioridades no envio e recepo;
h) utilizar o cadastro de usurios do Windows;
i) possibilitar aos usurios a localizao de outros usurios logados na rede.
7.2 Servidor.
O funcionamento da aplicao o seguinte: uma instncia da classe
TSocketConnection (componente responsvel por estabelecer a comunicao entre cliente e
servidor de aplicao) estabelece uma comunicao inicial entre o cliente e o servidor de
aplicao usando TCP/IP. Um requisito aqui necessrio que o servidor esteja executando um
aplicativo proprietrio chamado ScktSrvr.exe.
O ScktSrvr.exe, fornecido pela Borland, como aplicativo ou servio, que recebe os
52
pedidos dos clientes e os encaminha para o mdulo de dados remoto.
O servidor onde se encontra a base de dados, todo nosso processo gira em torno das
conexes ativas, mas antes de ativarmos uma conexo deveremos cadastrar os usurio que
utilizaro o sistema, est tarefa exclusiva do servidor.
As conexes so realizadas utilizando os componentes de acesso TSQLConnection,
TSQLDataSet, TDataSetProvider. O componente do tipo TSQLConnection realiza a conexo
entre o servidor e o banco de dados, os TSQLDataSet realizam as instrues SQL e o
TdataSetProvider responsvel por fazer a comunicao entre as requisies de SQL
recebidas e envidas entre Cliente e Servidor, conforme mostradas no Anexo A.
O formulrio de cadastro de usurios como j foi dito de responsabilidade do
servidor, onde o usurio deve solicitar ao administrador a manuteno de seus dados. O
formulrio de cadastro pode ser visto na figura 08.
Os dados mais relevantes neste formulrio so:
O Campo Nome: que nada mais que o nome do usurio, o Campo Nick: que na
verdade a nossa chave (PRIMARY KEY) para encontrar o usurio e suas mensagens sendo
assim o Nick (apelido) ser nico, o Campo Data Final que data mxima em que usurio
poder utilizar a ferramenta aps vencer esta data ele ira fazer uma solicitao ao
administrador que ir renov-la por mais um perodo. O Campo Bloqueado tambm
importante caso o administrador queira afastar um usurio por um determinado tempo, ou
indefinidamente.
Outros dois campos muito importantes neste formulrio so:
Usurio Rede: o nome do usurio na rede.
53
Maq. Rede: o nome da mquina que o usurio utiliza normalmente, essas duas
informaes sero utilizadas para iniciar automaticamente o sistema cliente, se o usurio
efetuou o login em sua maquina o sistema ira iniciar automaticamente.
Na figura 08 apresentado o cadastro de usurios, neste formulrio os campos onde
so informados os dados pessoais so do tipo TwwDBEdit. Para as datas usado
TwwDBDateTimePicker, e na palheta de consulta foi usado o componente TwwDbGrid.
Figura 08 Formulrio Cadastro de Usurios.
No servidor, ainda pode-se verificar onde cada usurio est logado, ou seja, em qual
mquina se encontra cada usurio. Alm disso, ele, o servidor, tem a possibilidade de ser
iniciado automaticamente com o sistema operacional.
54
Figura 09 Formulrio principal servidor.
7.3 Dicionrio de dados
A seguir apresentado as tabelas usadas na ferramenta.
MENSAGENS_EN
MEN_CODIGO
MEN_COD_USU
MEN_CODIGO_DE
MEN_ORIGEM_DE
MEN_ASSUNTO
MEN_RECEBIDO_EM
MEN_ENVIADO_EM
MEN_CAIXA
MEN_STATUS_LIDA
MEN_PARA
MEN_PARA_CC
MEN_PRIORIDADE
MEN_CONTEUDO
MEN_PRI_ALTA
MEN_RESPONDIDA
INTEGER
SMALLINT
INTEGER
VARCHAR(40)
VARCHAR(256)
DATE
DATE
INTEGER
VARCHAR(1)
VARCHAR(256)
VARCHAR(256)
INTEGER
BLOB
INTEGER
INTEGER
MENSAGENS
MEN_CODIGO
MEN_COD_USU
MEN_CODIGO_DE
MEN_ORIGEM_DE
MEN_ASSUNTO
MEN_RECEBIDO_EM
MEN_ENVIADO_EM
MEN_CAIXA
MEN_STATUS_LIDA
MEN_PARA
MEN_PARA_CC
MEN_PRIORIDADE
MEN_LIDAEM
MEN_CONTEUDO
MEN_PRI_ALTA
MEN_RESPONDIDA
INTEGER
SMALLINT
INTEGER
VARCHAR(40)
VARCHAR(256)
DATE
DATE
INTEGER
VARCHAR(1)
VARCHAR(256)
VARCHAR(256)
INTEGER
DATE
BLOB
INTEGER
INTEGER
MENSAGENS_EXCLUIDAS
MEN_CODIGO
MEN_COD_USU
MEN_CODIGO_DE
MEN_ORIGEM_DE
MEN_ASSUNTO
MEN_RECEBIDO_EM
MEN_ENVIADO_EM
MEN_CAIXA
MEN_STATUS_LIDA
MEN_PARA
MEN_PARA_CC
MEN_PRIORIDADE
MEN_LIDAEM
MEN_CONTEUDO
MEN_PRI_ALTA
MEN_RESPONDIDA
INTEGER
SMALLINT
INTEGER
VARCHAR(40)
VARCHAR(256)
DATE
DATE
INTEGER
VARCHAR(1)
VARCHAR(256)
VARCHAR(256)
INTEGER
DATE
BLOB
INTEGER
INTEGER
MENSAGENS_RASCUNHO
MEN_CODIGO
MEN_COD_USU
MEN_CODIGO_DE
MEN_ORIGEM_DE
MEN_ASSUNTO
MEN_RECEBIDO_EM
MEN_ENVIADO_EM
MEN_CAIXA
MEN_STATUS_LIDA
MEN_PARA
MEN_PARA_CC
MEN_PRIORIDADE
MEN_LIDAEM
MEN_CONTEUDO
MEN_PRI_ALTA
MEN_RESPONDIDA
INTEGER
SMALLINT
INTEGER
VARCHAR(40)
VARCHAR(256)
DATE
DATE
INTEGER
VARCHAR(1)
VARCHAR(256)
VARCHAR(256)
INTEGER
DATE
BLOB
INTEGER
INTEGER
USUARIO
USU_CODIGO
USU_NOME
USU_NIK
USU_DATA_CAD
USU_DATA_FIM
USU_BLOQUEADO
USU_STATUS
USU_PRIORIDADE
USU_SENHA
USU_REDE
USU_MAQUINA
USU_ATIVO
USU_FOTO
USU_ENDERECO
USU_BAIRRO
USU_CIDADE
USU_CEP
USU_FONE
USU_CELULAR
USU_EMAIL
USU_MAQLOG
INTEGER
VARCHAR(40)
VARCHAR(10)
DATE
DATE
INTEGER
VARCHAR(1)
INTEGER
VARCHAR(8)
VARCHAR(20)
VARCHAR(30)
INTEGER
BLOB
VARCHAR(40)
VARCHAR(40)
VARCHAR(40)
VARCHAR(9)
VARCHAR(15)
VARCHAR(15)
VARCHAR(40)
VARCHAR(15)
<pk>
Figura 10 Tabelas usadas no Sistema.
55
Os campos com seus respectivos atributos podem ser encontrados no anexo D.
Como banco de dados usado o Firebird 1.5, o FireBird um produto Open Source
que oferece uma excelente soluo como sistema gerenciador de bancos de dados de alta
performance.
A origem do FireBird a verso Open Source do Interbase 6.0 de Julho de 2000,
quando a Borland liberou os fontes de seu produto.
7.4. Aplicao cliente.
7.4.1 Formulrio de Configurao.
Na figura 09 a apresentado o formulrio principal do servidor.
Ao iniciar a ferramenta, ser solicitado ao usurio as informaes necessrias para
verificao dos servios de envio e recuperao de mensagens conforme apresentado na
figura 10, neste formulrio os dados a serem informados so:
O endereo do servidor (endereo IP) e tambm se o usurio deseja que o aplicativo
correio seja carregado juntamente com o sistema operacional. Ainda neste formulrio, o
usurio dispe de algumas configuraes com relao ao Chat, com, por exemplo, as cores
das mensagens.
Nos campos de digitao das informaes foram utilizados os componentes do tipo
TEdit, j na parte de visualizao dos possveis endereos do servidor, foi utilizado um
componente TlistBox.
Aps todas as informaes digitadas, o usurio clica em ok, ento a ferramenta
verifica todas as informaes, e grava em um registro na mquina local. Feito isso, inicia-se o
processo de conexo entre o cliente e o servidor, o cliente envia uma solicitao para conexo
56
ao servidor passando os seguintes parmetros: Socket.Address, que nada mais que o IP do
servidor, e tambm a porta de comunicao Socket.
Figura 11 Configurao IP servidor.
Aps a conexo efetuada, o prximo passo a autenticao do usurio.
7.4.2 Formulrio de Acesso.
Na tela de login (figura 11) o usurio ir se conectar efetivamente com o servidor, para
isso deve ser informado o Nick e a senha.
57
Figura 12 Login ao sistema.
No campo Usurio (Nick) deve ser informado o Nick (apelido) do usurio que j deve
estar previamente cadastrado no servidor, pois o mesmo ser usado pela ferramenta no
momento de envio e recebimento de mensagens.
Quando a conexo do servidor falha devido a erro de digitao no IP do servidor ou o
servidor esta inativo, o usurio recebe a seguinte mensagem.
Figura 13 Mensagem de erro
E quando a conexo falha por erro de digitao de login ou senha, o usurio recebe a
mensagem de erro abaixo.
Figura. 14 Mensagem erro.
58
7.4.3 Formulrio Principal Gerenciamento.
A partir de agora ser possvel utilizar os recursos do correio.
Nesta sesso, dada uma breve descrio dos componentes utilizados, pois todos os
formulrios seguem o mesmo padro.
Para fazer a leitura das mensagens necessrio clicar em uma das caixas desejadas,
feito isso comea o processo de recuperao da mensagem, onde o componente responsvel
por este controle o TclientDataSet, que est conectado a um TsocketConnection, que se
conecta ao servidor remoto atravs do aplicativo Borland Server Socket scktsrvr.exe , que
se encontra no servidor.
O TClientDataSet gera uma requisio para recuperao de mensagens DataRequest
(parmetro), o servidor remoto recebe a requisio por intermdio de um componente
TDataSetProvider que gera o evento OnDataRequest(entrada paramento) que por sua vez
encaminha a requisio a um outro componente TSQLDataSet, que por fim realiza uma
consulta ao banco de dados e devolve o resultado do comando, conforme Anexo B.
Aps, os dados requisitados so recebidos e visualizados pelo TClientDadaSet no
formulrio atravs das seguintes caixas.
* Caixa Entrada
* Caixa Enviados
* Caixa Rascunho
* Caixa Excludos
A cada clique em uma das caixas acima, o sistema ir proceder conforme dito
59
anteriormente. Todas as funes que a ferramenta apresenta ao usurio so inicializadas a
partir deste formulrio, nele esto contidos as opes de acesso aos demais formulrios. O
formulrio de gerenciamento de mensagens composto por vrios componentes, alguns dos
principais so apresentados a seguir, e os demais podem ser conferidos no cdigo fonte no
anexo B.
O TdxBarManager o componente que possibilita o uso de menus personalizados,
com as opes de atalho e cliques do mouse, possibilitando tambm a adio de figuras. Para
a barra de ferramentas, foi usado o mesmo componente com os mesmo botes, porm com
propriedades diferentes.
Para criar os links e o cones para acesso as caixas de mensagens foi utilizado o
TdxNavBar, juntamente com o TdxNavBarItem que complementa o primeiro, no
TdxNavBarItem que a recuperao de mensagem codificada no evento OnClick.
Para exibir o cabealho de cada caixa foi utilizado componentes do tipo TwwDBGrid,
a cada clique nas caixas, os grids so alternados em suas propriedades visible, e Aling,
permitindo a visualizao de todas as caixas de mensagens.
Quanto a exibio do contedo de cada mensagem, foi utilizado o componente do
Tipo TwwDBRichEdit, onde a propriedade do DataSourse alterada para cada clique nas
caixas.
Estes so alguns dos componentes utilizados, o gerenciador possui basicamente uma
base de ferramentas na parte superior da tela onde so encontrados os botes que executam as
funes. O mesmo acontecendo com os menus que se encontram sobre a barra de ferramentas,
sendo que cada boto na barra de ferramentas uma opo anloga nos menus.
Quando a ferramenta aberta ela mostra como padro caixa de entrada de
60
mensagens e mostras as mensagens ainda no lidas em cor verde enquanto as mensagens lidas
ficam em cor branca. Tambm ao lado da caixa de entrada, mostrado o nmero de
mensagens ainda no lidas pelo usurio.
Figura. 15 Correio formulrio principal.
Tambm existe a possibilidade de classificar as mensagens apenas clicando em seu
cabealho o sistema far uma ordenao primeiro crescente no primeiro click e depois
decrescente no segundo click, caso o usurio necessite.
7.4.4 Criando uma nova mensagem.
Para que se possa digitar e enviar uma mensagem necessrio primeiro abrir o
formulrio de criao de mensagem.
Esta opo pode ser feita de trs formas: a primeira clicar no Boto Criar na barra de
61
ferramentas, a segunda opo seria atravs da barra de ferramentas e a ltima atravs da tecla
F2. Na ferramenta as funes de envio, resposta, resposta a todos e encaminhar mensagens
so todas funes semelhantes.
A interface do formulrio demonstrada na figura 15 logo abaixo.
Figura. 16- Formulrio de envio.
Na parte superior esto os botes da barra de ferramenta, sobre a barra de ferramentas
esta o menu de opes.
Abaixo da guia da barra de ferramentas, est a guia que contm os campos para serem
preenchidos. Para que o usurio possa enviar uma mensagem, necessrio que os seguintes
dados sejam preenchidos. Endereo do Destinatrio da Mensagem: este digitado no campo
62
Para que visualizado na figura acima, este endereo corresponde ao Nick do usurio que
ira receber a mensagem, seu preenchimento obrigatrio.
Endereo de cpia: este o endereo que utilizado para enviar uma ou mais copias
da mensagem, para cada endereo; necessrio ditar um ; entre eles. Este campo utilizado
somente quando o usurio desejar, no de preenchimento obrigatrio.
Nome do Emissor da Mensagem: este um atributo automtico, que corresponde ao
campo De que corresponde ao nome Real, que preenchido no servidor pode ser alterado
pelo usurio, em configuraes como iremos mostrar a diante.
Assunto: o ttulo da mensagem deve ser obrigatoriamente informado, pois serve para
identificar o contedo da mensagem, ou seja, do que se trata, neste caso um campo
obrigatrio.
Prioridade: este atributo possui trs possibilidades: a prioridade normal a padro por
default do sistema, mas ainda existe a prioridade baixa e alta.
Prioridade Baixa: o usurio no notificado que chegar novas mensagens, prioridade
Normal: o usurio ser notificado que chegaram novas mensagens para ele com um sinal ao
lado direto do monitor, na Prioridade alta: o usurio ser notificado que chegaram mensagens
com prioridade alta, a barra do aplicativo ira picar e o usurio ser notificado com uma
mensagem este campo de preenchimento obrigatrio.
Contedo da Mensagem: no campo contedo da mensagem deve ser informado o texto
da mensagem que ser enviada.
Depois de todos os dados informados pode ser utilizado o boto Enviar da barra de
ferramentas ou no Menu Arquivo na opo Enviar Mensagem, ser possvel enviar a
63
mensagem para o destinatrio como mostra a figura 16 abaixo.
Figura. 17 Menu Enviar mensagem.
Aps o trmino do envio da mensagem a ferramenta informa o usurio que a
mensagem foi enviada com sucesso.
O Procedimento para envio da mensagem simples:
O sistema verifica todos os dados informados antes de efetuar o envio da mensagem,
como por exemplo: verifica se o usurio destinatrio (Para) encontra-se cadastro na base de
dados no servidor remoto, fazendo vrias consultas distintas para cada usurio informado. O
componente CdsTempUser do tipo TclientDataset, far vrias requisies(DataRequest) de
consulta ao servidor remoto para cada usurio. Caso algum usurio no esteja cadastrodo, o
sistema informar.
Para envio simultneo a vrios usurios, o sistema cria um arquivo temporrio e oculto
no diretrio em que se encontra o aplicativo correio.exe, armazenando o contedo da
mensagem temporariamente at o trmino do envio da mensagem. Aps, o arquivo apagado
do sistema.
Este procedimento feito para que a mensagem no perca seu formato original aps
seu primeiro envio, cor, fonte.
Aps os testes de validao dos campos e de quem chamou o formulrio ento comea
64
o envio da mensagem. O procedimento de envio de mensagem pode ser visto no Anexo C.
7.4.5 Lendo as mensagens Recebidas.
O primeiro passo a ser tomado seleo da caixa de Mensagem desejada, clicando
com o mouse sobre a caixa escolhida conforme apresenta a figura 17.
Figura. 18 Caixa de acesso s mensagens.
Aps a seleo da caixa, possvel visualizar os cabealhos das mensagens abaixo da
barra de ferramenta na parte superior direita.
Logo abaixo do grid cabealho das mensagens, encontra-se o contedo da mensagem
propriamente dito.
7.4.6 Salvando uma Mensagem em Disco.
65
Para salvar a mensagem a forma bem simples, basta clicar na mensagem e depois no
menu Arquivo e Salvar Como, conforme a figura abaixo.
Figura. 19 - Menu Salvar em disco.
Ser aberta uma caixa de dilogo para salvar o arquivo, onde ser escolhido o diretrio
e o nome do arquivo.
As mensagem no salvas em disco com o formato Rich Text(*.rtf).
7.4.7 Abrindo um arquivo do Disco.
Quando uma mensagem salva em disco, a mesma poder ser aberta pela ferramenta
para ser lida ou enviada novamente para que o usurio possa abrir uma mensagem salva em
disco, o mesmo ter que clicar Arquivo, Abrir, ento abria caixa de dilogo para que o
usurio selecione o arquivo que contm a mensagem.
Aps aberto, a ferramenta ira preencher os dados no formulrio conforme a figura 19.
66
Figura 20 Mensagem recuperada.
7.4.8 Salvando uma Mensagem no servidor.
Para salvar uma mensagem ainda no enviada, o usurio dispe da caixa rascunho. Se
for necessrio guardar uma mensagem para ser enviada em outra ocasio, o usurio pode
proceder da seguinte maneira: clicar no Menu Arquivo atravs da opo salvar, a mensagem
ser salva na caixa rascunho.
Conforme a figura 20 logo abaixo.
Figura 21. Salvar arquivo no servidor.
67
7.4.9 Excluindo Mensagem do Servidor.
A mensagem a ser excluda dever ser selecionada na lista, para que a ferramenta saiba
qual mensagem de qual caixa ser excluda.
Para excluir uma mensagem pode-se utilizar o boto excluir na barra de ferramentas,
ou atravs do Menu a opo Excluir.
Quando as mensagens excludas so originrias das caixas: Caixa Entrada, Caixa
Sada e Caixa Rascunho, estas so movidas para a caixa de mensagens excludas. E para
exclu-las definitivamente, necessrio excluir desta caixa tambm.
7.4.10 Pesquisando usurio e sua localizao.
A ferramenta permite a busca de usurios conectados no sistema facilmente. Para isso,
basta o usurio clicar no Menu Configuraes e depois em Pesquisa Usurios, ento ser
apresentado o seguinte formulrio figura 21.
exibido o cdigo do usurio, o seu nome real seguido por o Nick, quando o estado
estiver com o Status A significa que o usurio est ativo, isso tambm poder ser visto mais
facilmente se observado a cor, quando a linha estiver verde significa que o usurio est on-
line, quando estiver off-line o status estar em I e a cor estar em branco.
68
Figura 22 Pesquisa usurios ativos.
7.4.11 Alternando os Meus dados.
possvel um usurio fazer algumas alteraes nos dados cadastrados anteriormente
no servidor. Este procedimento se encontra no Menu Arquivo em Meus Dados, onde o
usurio tem a possibilidade de alterar o nome, cidade, cep, telefone, celular, endereo, bairro,
e-mail.
Caso o usurio deseje efetuar o login automtico toda vez que acesse o sistema, ser
necessrio preencher as informaes Usurio da rede e Mquina da Rede.
Usurio da Rede: Deve ser informado o nome do usurio cadastrado na rede. Para
obter esta informao basta clicar com o mouse no boto.
Maquina Rede: O usurio deve informar o nome da sua mquina que utiliza
normalmente, caso o usurio no saiba o nome da mquina, basta clicar com o mouse no
boto de pesquisa mquina na rede.
69
Figura 23 Alterando os meus dados.
Acima na figura 22 corresponde ao formulrio para alterao dos dados.
7.5 Chat.
A ferramenta dispe ainda de um Chat, que foi desenvolvido para incrementar o
correio de mensagens.
O Chat possibilita a conversa em tempo real de todos os usurios cadastrados no
servidor. Para implementao, foram utilizados basicamente os mesmos componentes do
aplicativo de correio de mensagens.
Um componente muito importante utilizado no Chat o ClientSocket do Tipo
70
TClientSocket, que faz a conexo entre o cliente e o servidor.
este componente que recebe e envia as mensagens ao servidor pela propriedade
ClientSocket.Socket.SendText(mensagem). Esta mensagem pode conter vrios parmetros,
que so trabalhados no servidor para verificar o tipo de solicitao desejada.
O sistema busca automaticamente o Nick do usurio e o IP do servidor. Para o usurio
conectar-se a base preciso clicar no boto Conectar, disposto na barra de ferramentas ou
tambm atravs do Menu na Opo Chat, conectar. H tambm a possibilidade de salvar os
logs das mensagens atravs do boto Salvar Log.
Figura 24 Chat.
71
8 CONCLUSO.
Existem alguns sistemas semelhantes, mas a grande diferena e vantagem que a
ferramenta funciona sem estar conectada a internet, isso possibilita as empresas que no
possuem acesso internet a utilizarem o sistema em sua rede local.
O trabalho foi desenvolvido a partir de um amplo estudo sobre o funcionamento do
correio eletrnico, contemplando o formato de uma mensagem, como possvel envi-la,
recuper-la e salv-la.
A ferramenta possui vrias caractersticas nicas, e possui uma implementao segura
para o uso multi-usurio, no permitindo o acesso por usurios que no estejam cadastrados
no servidor remoto. A leitura das mensagens feita diretamente no servidor sem que sejam
copiadas para a mquina local que est sendo utilizada.
Este trabalho contribuiu na expanso do conhecimento sobre internet, intranet, e
principalmente sobre sistemas cliente/servidor. Permitiu tambm, um melhor conhecimento
sobre a linguagem Object Pascal, sobre o Delphi e banco de dados.
Como trabalho futuro, sugere-se o incremento de algumas funcionalidades na
ferramenta. Como por exemplo: controles de spam; troca de arquivos em anexos; troca de
mensagem em viva voz; entre outros.
72
9 BIBLIOGRAFIA.
[BAN 97] Banett, Gordon Intranets: Como implantar como sucesso na sua empresa.
Trad. ARX publicaes - Rio de Janeiro, Editora Campus, 1997
[DEC 99] Comer, Douglas E. Interligao em rede com TCP/IP. Vol. 1- Principais,
protocolos e arquitetura Trad. ARX publicaes, Rio de Janeiro, Editora
Campus 1999.
[INI 04] Marcilio Sanches, Manoel. Disponvel em: http://www.ime.usp.br/~mms
acesso em 09 out. 2004.
[JUL 04] Battisti, Julio. Disponvel em: http://www.juliobattisti.com.br acessado em : 09
out. 2004.
[KOR 99] KORTH, Henry F.; SILBERSCHATZ, Abraham Sistemas de Banco
de Dados. Traduo: Marlia Guimares Pinheiro; reviso tcnica Luiz
Ricardo de Figueredo 3 ed. Rev. So Paulo: MAKRON Books,
1999.
[LEC 01] Cristvo, Leonardo Desenvolvendo Chat em Delphi.
[MCF 95] McFreides, Paul. Guia Incrvel do Correio Eletrnico da Internet e-mail.
Markon Books do Brasil Editora Ltda. So Paulo SP 1995.
[MOU 86] Moura Jos Anto Beltro. Redes Locais de Computadores - So Paulo Mc
Graw-Hill, 1986.
[SHI 94] Shiry, Clay. Internet Guia de Acesso por Correio Eletrnico.
InfoBooks S.A. Rio de Janeiro RJ 1994.
73
ANEXOS
O nmero de linhas do cdigo fonte desta ferramenta muito grande para serem
listados nestes anexos. Em funo disso, listamos alguns trechos do cdigo mais importantes,
sendo que todos os fontes estaro a disposio num CD, junto com o trabalho final.
Anexo A unit Dados Conexo entre Servidor/Cliente.
Anexo B Pedido Requisio para Recuperao de Mensagem - unit FrmPrincipal
Anexo C Procedimento de envio de uma Mensagem.
Anexo D Dicionrio de Dados da ferramenta
74
ANEXO A
unit Dados Conexo entre Servidor/Cliente
unit Dados;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
DBClient, Servidor_TLB, StdVcl, DBXpress, FMTBcd, DB, Provider, SqlExpr,
MConnect, SConnect;
type
TDadosServidorT = class(TRemoteDataModule, IDadosServidorT)
SQLConecao: TSQLConnection;
SqlDsUsuario: TSQLDataSet;
DspTUsuario: TDataSetProvider;
SQLMensagens: TSQLDataSet;
DspMensagens: TDataSetProvider;
SqlDsUsuarioUSU_REDE: TStringField;
SqlDsUsuarioUSU_MAQUINA: TStringField;
75
SqlDsUsuarioUSU_ATIVO: TIntegerField;
SQLPesquisaUsu: TSQLDataSet;
IntegerField1: TIntegerField;
StringField1: TStringField;
StringField2: TStringField;
SQLTimeStampField1: TSQLTimeStampField;
SQLTimeStampField2: TSQLTimeStampField;
DspPesquisaUsu: TDataSetProvider;
SQLEnvMens: TSQLDataSet;
DspEnvMens: TDataSetProvider;
SQLTempUser: TSQLDataSet;
IntegerField9: TIntegerField;
StringField12: TStringField;
StringField13: TStringField;
SQLTimeStampField5: TSQLTimeStampField;
SQLTimeStampField6: TSQLTimeStampField;
IntegerField10: TIntegerField;
StringField14: TStringField;
IntegerField11: TIntegerField;
StringField15: TStringField;
StringField16: TStringField;
StringField17: TStringField;
IntegerField12: TIntegerField;
DspTempUser: TDataSetProvider;
SQLQryMen: TSQLDataSet;
DsQryMen: TDataSetProvider;
SQLQryMenCODIGO: TIntegerField;
SQLMEnviadas: TSQLDataSet;
DspMEnviadas: TDataSetProvider;
SQLQryEnviadas: TSQLDataSet;
DspQryEnviadas: TDataSetProvider;
SQLQryEnviadasCODIGO: TIntegerField;
SQLMensagensMEN_CODIGO: TIntegerField;
SQLMensagensMEN_COD_USU: TSmallintField;
SQLMensagensMEN_CODIGO_DE: TIntegerField;
SQLMensagensMEN_ORIGEM_DE: TStringField;
SQLMensagensMEN_ASSUNTO: TStringField;
SQLMensagensMEN_RECEBIDO_EM: TSQLTimeStampField;
SQLMensagensMEN_ENVIADO_EM: TSQLTimeStampField;
SQLMensagensMEN_CAIXA: TIntegerField;
SQLMensagensMEN_SUB_CAIXA: TIntegerField;
SQLMensagensMEN_STATUS_LIDA: TStringField;
SQLMensagensMEN_PARA: TStringField;
SQLMensagensMEN_PARA_CC: TStringField;
SQLMensagensMEN_PRIORIDADE: TIntegerField;
SQLMensagensMEN_LIDAEM: TSQLTimeStampField;
SQLMensagensMEN_CONTEUDO: TMemoField;
SQLMEnviadasMEN_CODIGO: TIntegerField;
SQLMEnviadasMEN_COD_USU: TSmallintField;
SQLMEnviadasMEN_CODIGO_DE: TIntegerField;
76
SQLMEnviadasMEN_ORIGEM_DE: TStringField;
SQLMEnviadasMEN_ASSUNTO: TStringField;
SQLMEnviadasMEN_RECEBIDO_EM: TSQLTimeStampField;
SQLMEnviadasMEN_ENVIADO_EM: TSQLTimeStampField;
SQLMEnviadasMEN_CAIXA: TIntegerField;
SQLMEnviadasMEN_SUB_CAIXA: TIntegerField;
SQLMEnviadasMEN_STATUS_LIDA: TStringField;
SQLMEnviadasMEN_PARA: TStringField;
SQLMEnviadasMEN_PARA_CC: TStringField;
SQLMEnviadasMEN_PRIORIDADE: TIntegerField;
SQLMEnviadasMEN_CONTEUDO: TMemoField;
SQLEnvMensMEN_CODIGO: TIntegerField;
SQLEnvMensMEN_COD_USU: TSmallintField;
SQLEnvMensMEN_CODIGO_DE: TIntegerField;
SQLEnvMensMEN_ORIGEM_DE: TStringField;
SQLEnvMensMEN_ASSUNTO: TStringField;
SQLEnvMensMEN_RECEBIDO_EM: TSQLTimeStampField;
SQLEnvMensMEN_ENVIADO_EM: TSQLTimeStampField;
SQLEnvMensMEN_CAIXA: TIntegerField;
SQLEnvMensMEN_SUB_CAIXA: TIntegerField;
SQLEnvMensMEN_STATUS_LIDA: TStringField;
SQLEnvMensMEN_PARA: TStringField;
SQLEnvMensMEN_PARA_CC: TStringField;
SQLEnvMensMEN_PRIORIDADE: TIntegerField;
SQLEnvMensMEN_LIDAEM: TSQLTimeStampField;
SQLEnvMensMEN_CONTEUDO: TMemoField;
SQLMenPrioridade: TSQLDataSet;
DspMenPrioridade: TDataSetProvider;
SQLMenPrioridadeMEN_CODIGO: TIntegerField;
SQLMenPrioridadeMEN_COD_USU: TSmallintField;
SQLMenPrioridadeMEN_CAIXA: TIntegerField;
SQLMenPrioridadeMEN_PRIORIDADE: TIntegerField;
SQLMenPrioridadeMEN_STATUS_LIDA: TStringField;
SQLMenPrioridadeMEN_PRI_ALTA: TIntegerField;
SQLMEnviadasMEN_PRI_ALTA: TIntegerField;
SQLEnvMensMEN_PRI_ALTA: TIntegerField;
SQLMensagensMEN_PRI_ALTA: TIntegerField;
SqlDsUsuarioUSU_FOTO: TBlobField;
SqlDsUsuarioUSU_ENDERECO: TStringField;
SqlDsUsuarioUSU_BAIRRO: TStringField;
SqlDsUsuarioUSU_CIDADE: TStringField;
SqlDsUsuarioUSU_CEP: TStringField;
SqlDsUsuarioUSU_FONE: TStringField;
SqlDsUsuarioUSU_CELULAR: TStringField;
SqlDsUsuarioUSU_EMAIL: TStringField;
SQLMenExcluidas: TSQLDataSet;
DspMenExcluidas: TDataSetProvider;
SQLMaxExcluidas: TSQLDataSet;
DspMaxExcluida: TDataSetProvider;
SQLMenExcluidasMEN_CODIGO: TIntegerField;
77
SQLMenExcluidasMEN_COD_USU: TSmallintField;
SQLMenExcluidasMEN_CODIGO_DE: TIntegerField;
SQLMenExcluidasMEN_ORIGEM_DE: TStringField;
SQLMenExcluidasMEN_ASSUNTO: TStringField;
SQLMenExcluidasMEN_RECEBIDO_EM: TSQLTimeStampField;
SQLMenExcluidasMEN_ENVIADO_EM: TSQLTimeStampField;
SQLMenExcluidasMEN_CAIXA: TIntegerField;
SQLMenExcluidasMEN_SUB_CAIXA: TIntegerField;
SQLMenExcluidasMEN_STATUS_LIDA: TStringField;
SQLMenExcluidasMEN_PARA: TStringField;
SQLMenExcluidasMEN_PARA_CC: TStringField;
SQLMenExcluidasMEN_PRIORIDADE: TIntegerField;
SQLMenExcluidasMEN_LIDAEM: TSQLTimeStampField;
SQLMenExcluidasMEN_CONTEUDO: TMemoField;
SQLMenExcluidasMEN_PRI_ALTA: TIntegerField;
SQLMaxExcluidasCODIGO: TIntegerField;
SQLMensagensMEN_RESPONDIDA: TIntegerField;
SQLEnvMensMEN_RESPONDIDA: TIntegerField;
SQLMenExcluidasMEN_RESPONDIDA: TIntegerField;
SQLMEnviadasMEN_RESPONDIDA: TIntegerField;
SQLCaixaRascunho: TSQLDataSet;
SQLCaixaRascunhoMEN_CODIGO: TIntegerField;
SQLCaixaRascunhoMEN_COD_USU: TSmallintField;
SQLCaixaRascunhoMEN_CODIGO_DE: TIntegerField;
SQLCaixaRascunhoMEN_ORIGEM_DE: TStringField;
SQLCaixaRascunhoMEN_ASSUNTO: TStringField;
SQLCaixaRascunhoMEN_RECEBIDO_EM: TSQLTimeStampField;
SQLCaixaRascunhoMEN_ENVIADO_EM: TSQLTimeStampField;
SQLCaixaRascunhoMEN_CAIXA: TIntegerField;
SQLCaixaRascunhoMEN_SUB_CAIXA: TIntegerField;
SQLCaixaRascunhoMEN_STATUS_LIDA: TStringField;
SQLCaixaRascunhoMEN_PARA: TStringField;
SQLCaixaRascunhoMEN_PARA_CC: TStringField;
SQLCaixaRascunhoMEN_PRIORIDADE: TIntegerField;
SQLCaixaRascunhoMEN_LIDAEM: TSQLTimeStampField;
SQLCaixaRascunhoMEN_CONTEUDO: TMemoField;
SQLCaixaRascunhoMEN_PRI_ALTA: TIntegerField;
SQLCaixaRascunhoMEN_RESPONDIDA: TIntegerField;
DspCaixaRascunho: TDataSetProvider;
SQLMAXRascunho: TSQLDataSet;
IntegerField5: TIntegerField;
DspMaxRascunho: TDataSetProvider;
SqlDsUsuarioUSU_MAQLOG: TStringField;
SQLPesquisaUsuUSU_MAQLOG: TStringField;
function t(Sender: TObject;
Input: OleVariant): OleVariant;
function DspMensagensDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DspPesquisaUsuDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
78
function DspEnvMensDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DspTempUserDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DspMEnviadasDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DspQryEnviadasDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DspMenPrioridadeDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DspMenExcluidasDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DspCaixaRascunhoDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DspMaxRascunhoDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
private
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
override;
public
{ Public declarations }
end;
implementation
uses FrmServidor, FrmUsuarios;
{$R *.DFM}
class procedure TDadosServidorT.UpdateRegistry(Register: Boolean; const ClassID,
ProgID: string);
begin
if Register then
begin
inherited UpdateRegistry(Register, ClassID, ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID);
end else
begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID);
inherited UpdateRegistry(Register, ClassID, ProgID);
end;
end;
function TDadosServidorT.t(Sender: TObject;
Input: OleVariant): OleVariant;
begin
79
SqlDsUsuario.CommandText:=Input;
end;
function TDadosServidorT.DspMensagensDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLMensagens.CommandText:=Input;
end;
function TDadosServidorT.DspPesquisaUsuDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLPesquisaUsu.CommandText:=Input;
end;
function TDadosServidorT.DspEnvMensDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLEnvMens.CommandText := '';
SQLEnvMens.CommandText:=Input;
end;
function TDadosServidorT.DspTempUserDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLTempUser.CommandText:=Input;
end;
function TDadosServidorT.DspMEnviadasDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLMEnviadas.CommandText:=Input;
end;
function TDadosServidorT.DspQryEnviadasDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLQryEnviadas.CommandText := '';
SQLQryEnviadas.CommandText:=Input;
end;
function TDadosServidorT.DspMenPrioridadeDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLMenPrioridade.CommandText:=Input;
end;
function TDadosServidorT.DspMenExcluidasDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
80
begin
SQLMenExcluidas.CommandText:=Input;
end;
function TDadosServidorT.DspCaixaRascunhoDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLCaixaRascunho.CommandText:=Input;
end;
function TDadosServidorT.DspMaxRascunhoDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
SQLMAXRascunho.CommandText:=Input;
end;
initialization
TComponentFactory.Create(ComServer, TDadosServidorT,
Class_DadosServidorT, ciMultiInstance, tmApartment);
end.
81
ANEXO B
Pedido Requisio para Recuperao de Mensagem
procedure TFormPrincipal.nbCaixaEntradaClick(Sender: TObject);
var
nsql: string;
begin
PanelFrente.Caption := ' Caixa Entrada';
DMDados.CdsMensagens.Close;
nsql := ' Select * from mensagens' +
' where mensagens.men_cod_usu=' +
DMDados.CdsUsuarioUSU_CODIGO.AsString +
' and mensagens.men_caixa=2';
DMDados.CdsMensagens.DataRequest(nsql);
DMDados.CdsMensagens.Active := true;
{setar to Editor para caixa}
Editor.DataSource := DMDados.DsMensagens;
GridEnviadas.Visible := False;
{Grid_Entrada}
GridEntrada.Visible := true;
GridEntrada.Align := alClient;
82
{Grid_Excluidos}
GridExcluidas.Visible := False;
{Grid Rascunho}
GridRascunho.Visible := False;
end;
83
ANEXO C
Procedimento de Envio de uma mensagem.
procedure TFormEnivarEmail.Botao_EnviarMensagemClick(Sender: TObject);
var
nsql: string;
i, idx, nCodigo, nPrioridade: Integer;
nPara, nTodos, nCaminho: string;
begin
{verificar para}
if Trim(DBPara.Text) = '' then
begin
MessageDlg('A mensagem no pode ser enviada.' + #13 + #13 +
'Voc deve especificar algun destinatrio para a mensagem', mtWarning, [mbOK],
0);
DBPara.SetFocus;
exit;
end;
if Trim(EditAssunto.Text) = '' then
begin
84
MessageDlg('A mensagem no pode ser enviada.' + #13 + #13 +
'Voc deve especificar algun assunto para a mensagem', mtWarning, [mbOK], 0);
EditAssunto.SetFocus;
exit;
end;
{pegar a lista de envio Para }
ListaPara.Items.Clear;
nTodos := Trim(DBPara.Text);
if nTodos[Length(nTodos)] <> ';' then
begin
Insert(';', nTodos, Length(nTodos) + 1);
end;
i := 1;
while Length(nTodos) <> 0 do
begin
if (nTodos[i] = ' ') or (nTodos[i] = ';') then
begin
if nTodos[i] = ';' then
begin
nPara := Copy(nTodos, Pos(nTodos, ';'), i - 1);
Delete(nTodos, 1, length(nPara) + 1);
end;
ListaPara.Items.Add(nPara);
i := 0;
end;
inc(i);
end;
nPara := '';
nTodos := '';
{pegar a lista de envio ParaCc}
ListaCc.Items.Clear;
nTodos := Trim(EditCc.Text);
if nTodos <> '' then
begin
if nTodos[Length(nTodos)] <> ';' then
begin
Insert(';', nTodos, Length(nTodos) + 1);
end;
i := 1;
while Length(nTodos) <> 0 do
begin
if (nTodos[i] = ' ') or (nTodos[i] = ';') then
begin
if nTodos[i] = ';' then
begin
nPara := Copy(nTodos, Pos(nTodos, ';'), i - 1);
Delete(nTodos, 1, length(nPara) + 1);
end;
85
ListaCc.Items.Add(nPara);
i := 0;
end;
inc(i);
end;
end;
{verificar se usurio est cadastrado Para}
idx := 0;
for idx := 0 to ListaPara.Items.Count - 1 do
begin
nPara := UpperCase(ListaPara.Items[idx]);
DMDados.CdsTempUser.Active := false;
nsql := ('SELECT * FROM USUARIO ' + ' where upper(usuario.usu_nik)=' + chr(39)
+ UpperCase(nPara) + chr(39) + '');
DMDados.CdsTempUser.DataRequest(nsql);
DMDados.CdsTempUser.Active := True;
{testes antes do envio}
if nPara = '' then
begin
MessageDlg('Verifique contatos informados', mtInformation, [mbOK], 0);
DBPara.SetFocus;
exit;
end;
if DMDados.CdsTempUser.RecordCount = 0 then
begin
MessageDlg('Usurio:' + nPara + ' no cadastardo verifique na sua lista de
contatos.', mtInformation, [mbOK], 0);
DBPara.SetFocus;
exit;
end;
end;
{verificar se usurio est cadastrado ParaCc}
idx := 0;
for idx := 0 to ListaCc.Items.Count - 1 do
begin
nPara := UpperCase(ListaCc.Items[idx]);
DMDados.CdsTempUser.Active := false;
nsql := ('SELECT * FROM USUARIO ' + ' where upper(usuario.usu_nik)=' + chr(39)
+ UpperCase(nPara) + chr(39) + '');
DMDados.CdsTempUser.DataRequest(nsql);
DMDados.CdsTempUser.Active := True;
{testes antes do envio}
if nPara = '' then
begin
MessageDlg('Verifique contatos informados', mtInformation, [mbOK], 0);
EditCc.SetFocus;
exit;
end;
86
if DMDados.CdsTempUser.RecordCount = 0 then
begin
MessageDlg('Usurio:' + nPara + ' no cadastardo verifique na sua lista de
contatos.', mtInformation, [mbOK], 0);
EditCc.SetFocus;
exit;
end;
end;
// pegar prioridade
nPrioridade := CmbPrioridade.ItemIndex;
if nPrioridade <= -1 then
begin
MessageDlg('Informe a prioridade da mensagem.', MtInformation, [Mbok], 0);
exit;
end;
{Pegar caminho do executavel}
nCaminho := Application.ExeName;
Delete(nCaminho, pos('.', Application.ExeName), 4);
Editor.Lines.SaveToFile(nCaminho + 'Temp1.rtf');
FileSetAttr(nCaminho + 'Temp1.rtf', 2);
{apos verificados os email ENVIAR PARA caixa de ENTRADA}
idx := 0;
for idx := 0 to ListaPara.Items.Count - 1 do
begin
{pegar os dados do usu}
nPara := UpperCase(ListaPara.Items[idx]);
DMDados.CdsTempUser.Active := false;
nsql := ('SELECT * FROM USUARIO ' + ' where upper(usuario.usu_nik)=' + chr(39)
+ UpperCase(nPara) + chr(39) + '');
DMDados.CdsTempUser.DataRequest(nsql);
DMDados.CdsTempUser.Active := True;
DMDados.CdsEnviar.Active := true;
if not (DMDados.CdsEnviar.State in [dsInsert]) then
DMDados.CdsEnviar.Insert;
{para quem ira receber a mensagem}
DMDados.CdsEnviarMEN_COD_USU.AsInteger :=
DMDados.CdsTempUserUSU_CODIGO.AsInteger;
{codigo origem de quem enviou a mensagem}
DMDados.CdsEnviarMEN_CODIGO_DE.AsInteger :=
DMDados.CdsUsuarioUSU_CODIGO.AsInteger;
{nome origem de quem enviou a mensagem}
DMDados.CdsEnviarMEN_ORIGEM_DE.AsString :=
DMDados.CdsUsuarioUSU_NIK.AsString;
{assunto }
DMDados.CdsEnviarMEN_ASSUNTO.AsString := EditAssunto.Text;
{data de envio da mensagem}
87
DMDados.CdsEnviarMEN_ENVIADO_EM.AsDateTime := Now;
{data do recibo }
DMDados.CdsEnviarMEN_RECEBIDO_EM.AsDateTime := Now;
{caixa de entrada codigo 2}
DMDados.CdsEnviarMEN_CAIXA.AsInteger := 2;
{status de no lida}
DMDados.CdsEnviarMEN_STATUS_LIDA.AsString := 'N';
{mensagem para Nick de quem ser enviada a mensagem }
DMDados.CdsEnviarMEN_PARA.AsString := DBPara.Text;
{mensagem para Nick de quem ser enviada a mensagem }
DMDados.CdsEnviarMEN_PARA_CC.AsString := EditCc.Text;
{mensagem prioridade}
DMDados.CdsEnviarMEN_PRIORIDADE.AsInteger := nPrioridade;
{conteudo carrega do arquivo}
DMDados.CdsEnviarMEN_CONTEUDO.LoadFromFile(nCaminho + 'Temp1.rtf');
{mesnagem no respondida }
DMDados.CdsEnviarMEN_RESPONDIDA.AsInteger := 0;
{segunda mensagem}
if idx = 1 then
begin
DMDados.CdsEnviarTemp.Active := false;
DMDados.CdsEnviarTemp.DataRequest('Select * from mensagens WHERE
mensagens.men_codigo=' + IntToStr(nCodigo));
DMDados.CdsEnviarTemp.Active := true;
end;
{segunda e demais mensagens }
if idx >= 1 then
DMDados.CdsEnviarMEN_CONTEUDO.AsVariant :=
DMDados.CdsEnviarTempMEN_CONTEUDO.AsVariant;
DMDados.CdsEnviarMEN_PRIORIDADE.AsInteger := CmbPrioridade.ItemIndex;
DMDados.CdsEnviar.Post;
nCodigo := DMDados.CdsEnviarMEN_CODIGO.AsInteger;
nPara := '';
end;
{apos verificados os email ENVIAR ParaCc caixa de ENTRADA}
idx := 0;
for idx := 0 to ListaCc.Items.Count - 1 do
begin
{pegar os dados do usu}
nPara := UpperCase(ListaCc.Items[idx]);
DMDados.CdsTempUser.Active := false;
nsql := ('SELECT * FROM USUARIO ' + ' where upper(usuario.usu_nik)=' + chr(39)
+ UpperCase(nPara) + chr(39) + '');
DMDados.CdsTempUser.DataRequest(nsql);
DMDados.CdsTempUser.Active := True;
DMDados.CdsEnviar.Active := true;
if not (DMDados.CdsEnviar.State in [dsInsert]) then
DMDados.CdsEnviar.Insert;
88
{para quem ira receber a mensagem}
DMDados.CdsEnviarMEN_COD_USU.AsInteger :=
DMDados.CdsTempUserUSU_CODIGO.AsInteger;
{codigo origem de quem enviou a mensagem}
DMDados.CdsEnviarMEN_CODIGO_DE.AsInteger :=
DMDados.CdsUsuarioUSU_CODIGO.AsInteger;
{nome origem de quem enviou a mensagem}
DMDados.CdsEnviarMEN_ORIGEM_DE.AsString :=
DMDados.CdsUsuarioUSU_NIK.AsString;
{assunto }
DMDados.CdsEnviarMEN_ASSUNTO.AsString := EditAssunto.Text;
{data de envio da mensagem}
DMDados.CdsEnviarMEN_ENVIADO_EM.AsDateTime := Now;
{data do recibo }
DMDados.CdsEnviarMEN_RECEBIDO_EM.AsDateTime := Now;
{caixa de entrada codigo 2}
DMDados.CdsEnviarMEN_CAIXA.AsInteger := 2;
{status de no lida}
DMDados.CdsEnviarMEN_STATUS_LIDA.AsString := 'N';
{seter como no respondida}
DMDados.CdsEnviarMEN_RESPONDIDA.AsInteger := 0;
{mensagem para Nick de quem ser enviada a mensagem }
DMDados.CdsEnviarMEN_PARA.AsString := DBPara.Text;
{mensagem para Nick de quem ser enviada a mensagem }
DMDados.CdsEnviarMEN_PARA_CC.AsString := EditCc.Text;
{prioridade}
DMDados.CdsEnviarMEN_PRIORIDADE.AsInteger := nPrioridade;
{segunda mensagem}
if idx = 0 then
begin
DMDados.CdsEnviarTemp.Active := false;
DMDados.CdsEnviarTemp.DataRequest('Select * from mensagens WHERE
mensagens.men_codigo=' + IntToStr(nCodigo));
DMDados.CdsEnviarTemp.Active := true;
DMDados.CdsEnviarMEN_CONTEUDO.AsVariant :=
DMDados.CdsEnviarTempMEN_CONTEUDO.AsVariant;
end;
{segunda e demais mensagens }
if idx >= 1 then
DMDados.CdsEnviarMEN_CONTEUDO.AsVariant :=
DMDados.CdsEnviarTempMEN_CONTEUDO.AsVariant;
DMDados.CdsEnviarMEN_PRIORIDADE.AsInteger := CmbPrioridade.ItemIndex;
DMDados.CdsEnviar.Post;
nCodigo := DMDados.CdsEnviarMEN_CODIGO.AsInteger;
nPara := '';
end;
{ ********* Gravar na minha caixa de Enviadas ********* }
89
DMDados.CdsCaxaEnviadas.Active := true;
DMDados.CdsCaxaEnviadas.Insert;
{quem recebera a mensagem}
DMDados.CdsCaxaEnviadasMEN_COD_USU.AsInteger :=
DMDados.CdsUsuarioUSU_CODIGO.AsInteger;
{codigo origem de quem enviou a mensagem}
DMDados.CdsCaxaEnviadasMEN_CODIGO_DE.AsInteger :=
DMDados.CdsUsuarioUSU_CODIGO.AsInteger;
{caixa da envidados}
DMDados.CdsCaxaEnviadasMEN_CAIXA.AsInteger := 1;
{assunto caixa enviados}
DMDados.CdsCaxaEnviadasMEN_ASSUNTO.AsString := EditAssunto.Text;
{data do envio}
DMDados.CdsCaxaEnviadasMEN_ENVIADO_EM.AsDateTime := Date;
{de - nome do ususario que enviou}
DMDados.CdsCaxaEnviadasMEN_ORIGEM_DE.AsString :=
Trim(DMDados.CdsUsuarioUSU_NIK.AsString);
{para quem enviou a mensagem}
DMDados.CdsCaxaEnviadasMEN_PARA.AsString := DBPara.Text;
{}
DMDados.CdsCaxaEnviadasMEN_STATUS_LIDA.AsString := 'S';
{}
{paraCc}
DMDados.CdsCaxaEnviadasMEN_PARA_CC.AsString := EditCc.Text;
DMDados.CdsCaxaEnviadasMEN_PRIORIDADE.AsInteger := nPrioridade;
{contedudo enviado}
if idx = 1 then
DMDados.CdsCaxaEnviadasMEN_CONTEUDO.AsVariant :=
DMDados.CdsEnviarMEN_CONTEUDO.AsVariant;
if idx > 1 then
DMDados.CdsCaxaEnviadasMEN_CONTEUDO.AsVariant :=
DMDados.CdsEnviarTempMEN_CONTEUDO.AsVariant;
DMDados.CdsCaxaEnviadasMEN_RESPONDIDA.AsInteger := 0;
{gravar}
DMDados.CdsCaxaEnviadas.Post;
nPara := '';
{deletar o arquivo temp}
if FileExists(nCaminho + 'Temp1.rtf') then
DeleteFile(nCaminho + 'Temp1.rtf');
MessageDlg('Mensagem enviada com sucesso', mtConfirmation, [mbOK], 0);
if FormPrincipal.nQueChamaEnv[1] = 'Rascunho' then
begin
90
DMDados.CdsCaixaRascunho.Locate('MEN_CODIGO',
StrToInt(FormPrincipal.nQueChamaEnv[2])
, [loCaseInsensitive, loPartialKey]);
DMDados.CdsCaixaRascunho.Delete;
end;
Close;
end;
91
ANEXO D
Dicionrio de Dados
Tabela Mensagens: Corresponde a caixa de entrada.
MEN_CODIGO: Cdigo Sequncial chave primria
MEN_COD_USU: Cdigo de quem enviou a mensagem
MEN_CODIGO_DE: Cdigo de quem ir receber a mensagem,
MEN_ORIGEM_DE: Nome do recpetor da mensagem
MEN_ASSUNTO: Assunto
MEN_RECEBIDO_EM: Dada que foi recebida
MEN_ENVIADO_EM: Data que foi envida
MEN_CAIXA: Cdigo da caixa de mensagem
MEN_STATUS_LIDA: Status lida
MEN_PARA: Nick de quem ira receber a mensagem
MEN_PARA_CC: Nick de quem ira receber a mensagem
MEN_PRIORIDADE: Prioridade 1/2/3
MEN_LIDAEM: Data em que foi lida
MEN_CONTEUDO: Contedo
MEN_PRI_ALTA: Seta com avisada
MEN_RESPONDIDA: Mensagem Respondida
Tabela Mensagens_Excluidas: Corresponde a caixa de excludos.
MEN_CODIGO: Cdigo Seqencial chave primria
MEN_COD_USU: Cdigo de quem enviou a mensagem
MEN_CODIGO_DE: Cdigo de quem ir receber a mensagem,
MEN_ORIGEM_DE: Nome do receptor da mensagem
MEN_ASSUNTO: Assunto
MEN_RECEBIDO_EM: Dada que foi recebida
MEN_ENVIADO_EM: Data que foi envida
MEN_CAIXA: Cdigo da caixa de mensagem
MEN_STATUS_LIDA: Status lida
MEN_PARA: Nick de quem ira receber a mensagem
MEN_PARA_CC: Nick de quem ira receber a mensagem
MEN_PRIORIDADE: Prioridade 1/2/3
MEN_LIDAEM: Data em que foi lida
MEN_CONTEUDO: Contedo
MEN_PRI_ALTA: Seta com avisada
MEN_RESPONDIDA: Mensagem Respondida
Tabela Mensagens_En: Corresponde a caixa enviados.
MEN_CODIGO: Cdigo Seqencial chave primria
MEN_COD_USU: Cdigo de quem enviou a mensagem
MEN_CODIGO_DE: Cdigo de quem ir receber a mensagem,
92
MEN_ORIGEM_DE: Nome do receptor da mensagem
MEN_ASSUNTO: Assunto
MEN_RECEBIDO_EM: Dada que foi recebida
MEN_ENVIADO_EM: Data que foi envida
MEN_CAIXA: Cdigo da caixa de mensagem
MEN_STATUS_LIDA: Status lida
MEN_PARA: Nick de quem ira receber a mensagem
MEN_PARA_CC: Nick de quem ira receber a mensagem
MEN_PRIORIDADE: Prioridade 1/2/3
MEN_CONTEUDO: Contedo
MEN_PRI_ALTA: Seta com avisada
MEN_RESPONDIDA: Mensagem Respondida
Tabela Mensagens_Rascunho: Corresponde a caixa de rascunho.
MEN_CODIGO: Cdigo Seqencial chave primria
MEN_COD_USU: Cdigo de quem enviou a mensagem
MEN_CODIGO_DE: Cdigo de quem ir receber a mensagem,
MEN_ORIGEM_DE: Nome do receptor da mensagem
MEN_ASSUNTO: Assunto
MEN_RECEBIDO_EM: Dada que foi recebida
MEN_ENVIADO_EM: Data que foi envida
MEN_CAIXA: Cdigo da caixa de mensagem
MEN_STATUS_LIDA: Status lida
MEN_PARA: Nick de quem ira receber a mensagem
MEN_PARA_CC: Nick de quem ira receber a mensagem
MEN_PRIORIDADE: Prioridade 1/2/3
MEN_LIDAEM: Data em que foi lida
MEN_CONTEUDO: Contedo
MEN_PRI_ALTA: Seta com avisada
MEN_RESPONDIDA: Mensagem Respondida
Tabela Usurio: Corresponde aos Usurios.
USU_CODIGO: Cdigo usurio
USU_NOME: Nome
USU_NIK: Apelido
USU_DATA_CAD: Data Cadastro
USU_DATA_FIM: Data limite para uso do Sistema
USU_BLOQUEADO: Bloqueado Sim/No
USU_STATUS: On-line
USU_PRIORIDADE: Prioridade do Usurio
USU_SENHA: Senha do Usurio
USU_REDE: Nome do usurio na rede
USU_MAQUINA: Nome da maquina na rede
USU_ATIVO: Usurio Ativo:
USU_FOTO: Foto
USU_ENDERECO: Endereo
USU_BAIRRO: Bairro
93
USU_CIDADE: Cidade
USU_CEP: CEP
USU_FONE: Telefone
USU_CELULAR: Celular
USU_EMAIL: e-mail
USU_MAQLOG: Maquina logada