Você está na página 1de 50

UNIVERSIDADE PAULISTA – UNIP

Curso: Ciência da Computação (CC)

ATIVIDADES PRÁTICAS SUPERVISIONADAS


“DESENVOLVIMENTO DE UMA FERRAMENTA DE COMUNICAÇÃO EM
REDE”

Nome: Eduardo Ferreira Xavier RA:B28AHF-0 Turma: CC5P68


Nome: Lucas Teles de Carvalho RA:D84162-9 Turma: CC4P68
Nome: Jorge Massakazu Teruya RA:D80528-2 Turma: CC4P68

SÃO PAULO

2020
2

Eduardo Ferreira Xavier

Lucas Teles de Carvalho

Jorge Massakazu Teruya

“Atividades Práticas Supervisionadas”

“DESENVOLVIMENTO DE UMA FERRAMENTA DE COMUNICAÇÃO EM


REDE”

Atividades Práticas Supervisionadas de Ciência da


Computação com objetivo de aprofundar os conhecimentos e
técnicas relacionados a Redes de Computadores e suas
tecnologias apresentada na Universidade Paulista (UNIP).

Orientador: Professora Miryan Moraes

SÃO PAULO

2020
3

LISTA DE ILUSTRAÇÕES

Imagem 01 - Classificação de processadores por escala Pág. 12

Imagem 02 - MODELO OSI Pág.16

Imagem 03 - Modelo de Referência TCP/IP Pág. 20

Imagem 04 - Referência topologia Ponto a Ponto Pág. 26

Imagem 05 - Referência topologia em Barramento Pág. 26

Imagem 06 - Referência topologia em Anel Pág. 27

Imagem 07 - Referência topologia em Estrela Pág. 28

Imagem 08 - Referência topologia em Árvore Pág. 29

Imagem 09 - Referência topologia Mista Pág. 29

Imagem 10 - Posição da interface Socket Pág. 31

Imagem 11 - Uso de sockets na comunicação cliente-servidor Pág. 31

Imagem 12 - Tela de Servidor Pág. 35

Imagem 13 - Tela de dados do usuário Pág. 36

Imagem 14 – Janelas de chat Pág. 37

Imagem 15 - Simulação de uma conversa Pág. 37


4

SUMÁRIO

1. OBJETIVO DO TRABALHO .................................................................................. 6

2. INTRODUÇÃO....................................................................................................... 7

3. FUNDAMENTOS DA COMUNICAÇÃO DE DADOS EM REDE (CONCEITOS


GERAIS) ..................................................................................................................... 9

3.1 O QUE SÃO REDES DE COMPUTADORES? ............................................... 11

3.2 TIPOS DE REDES .......................................................................................... 13

3.2.1 LAN (Local Area Network) – Rede de área local ...................................... 14

3.2.2 MAN (Metropolitan Area Network) – Rede de Área Metropolitana ............ 15

3.2.3 WAN (Wide Area Network) Rede Geograficamente Distribuída ou Rede de


Longa Distância ................................................................................................. 15

3.3 PROTOCOLOS DE REDE .............................................................................. 16

3.4 MODELO DE REFERÊNCIA OSI - OPEM SYSTEMS INTERCONNECTION 16

3.4.1 CAMADA FÍSICA ...................................................................................... 18

3.4.2 CAMADA DE LIGAÇÃO DE DADOS (ENLACE)....................................... 18

3.4.3 CAMADA DE REDE .................................................................................. 18

3.4.4 CAMADA DE TRANSPORTE ................................................................... 19

3.4.5 CAMADA DE SESSÃO ............................................................................. 19

3.4.6 CAMADA DE APRESENTAÇÃO .............................................................. 19

3.4.7 CAMADA DE APLICAÇÃO ....................................................................... 20


5

3.5 MODELO DE REFERÊNCIA TCP/IP ("TRANSMISSION CONTROL


PROTOCOL/ INTERNET PROTOCOL") ............................................................... 20

3.6 TCP ................................................................................................................. 22

3.7 IP ..................................................................................................................... 22

3.8 UDP................................................................................................................. 23

3.9 MÁSCARA DE REDE ...................................................................................... 23

3.10 PROTOCOLO ............................................................................................... 24

3.11 TIPOS DE PROTOCOLO .............................................................................. 24

3.12 ESTRUTURA DE REDE ............................................................................... 26

3.13 TOPOLOGIAS DE REDES............................................................................ 26

3.14 VoIP (Voice Over IP) ..................................................................................... 31

3.15 Socket ........................................................................................................... 31

4. DESENVOLIMENTO ............................................................................................ 33

5. PROJETO DO PROGAMA ................................................................................... 34

5.1 TELAS DO PROGRAMA EM FUNCIONAMENTO .......................................... 36

6. CONCLUSÃO ....................................................................................................... 39

7. CÓDIGO FONTE .................................................................................................. 40

8. REFERÊNCIAS BIBLIOGRAFICAS ..................................................................... 47

9. FICHAS DE HORAS ............................................................................................. 48


6

1. OBJETIVO DO TRABALHO

Em vista da ampla gama de áreas de pesquisa relacionadas às redes


Computador e a possibilidade de estudar conceitos de comunicação, visamos estudar
em um contexto específico um aplicativo que se comunica entre dois ou mais
computadores. A estrutura do aplicativo será feita usando a linguagem Java, o que
significa que utilizaremos Programação Orientada a Objeto utilizando a IDE Eclipse
para isso e explicação de todos os códigos descritos em detalhes de como criar um
aplicativo de comunicação em rede. O objetivo do aplicativo é enviar e receber
mensagens das seguintes maneiras Sockets usando transmissão do tipo TCP.

Nosso trabalho tem também o objetivo de simular a interligação entre as


Secretarias de Estado do Meio Ambiente de São Paulo com o intuído de realizar a
comunicação entre essas secretarias para que ocorra um monitoramento do Rio Tietê
que variam desde aumento no nível do rio até casos do poluição em todo o trajeto
desde sua nascente até sua foz.
7

2. INTRODUÇÃO

Com o grande crescimento da informática em um curto período de tempo as


redes de computadores acabaram se desenvolvendo rapidamente.

Agora com um simples click empresas e pessoas podem se comunicar


compartilhar e receber informações de qualquer localização.

Foi preciso então a criação de algumas regras para permitir a comunicação


entre computadores ou dispositivos conectados na internet. Para acontecer essa
comunicação utilizamos protocolos de rede que permitem que qualquer máquina
conectada à internet possa se comunicar com outra também já conectada na rede.

Desde o início da existência humana, a comunicação tem sido uma das maiores
necessidades da sociedade humana. Com a expansão da civilização, a distribuição
geográfica da área ocupada está se tornando cada vez mais dispersa, e a
comunicação de longa distância está se tornando uma necessidade e um desafio.
Nossos ancestrais descobriram maneiras de se comunicar através de sinais de
fumaça ou de pombos correios por exemplo com a tentativa de aproximar
comunidades distantes. Estamos sempre procurando uma maneira mais rápida de
transmitir informações importantes, seja por e-mails entre funcionários de uma
empresa ou por bate-papo entre dois funcionários em diferentes setores.

Desde então, uma das primeiras ferramentas de bate-papo gravadas foi o


Internet Relay Chat (IRC), que foi aprimorado continuamente e foram feitos esforços
para aumentar sua velocidade e segurança. Atualmente, de ferramentas de
computador a aplicativos móveis, o bate-papo em tempo real existe em todo o mundo.
Diferentemente das conversas iniciais, essas conversas são mais rápidas e têm
criptografia, e estão sempre buscando a segurança de seus usuários. O
desenvolvimento do processamento de informações não ocorre apenas no campo da
comunicação. Durante todo o nosso processo de desenvolvimento, o equipamento
usado para processar e armazenar informações também é o objetivo da principal
invenção. Nesse sentido, a introdução de sistemas de computadores na década de
1950 pode ser o maior avanço deste século.
8

A combinação de computadores e comunicações teve um enorme impacto na


forma como os sistemas de computador são organizados. É completamente
ultrapassado o conceito de "centro de computação" como uma sala em que os
usuários levam programas para serem processados. Este modelo antigo foi
substituído por um computador que atenda a todas as necessidades computacionais
da organização organizados pelas chamadas redes de computadores nas quais as
tarefas estão localizadas executada por uma série de computadores conectados. Uma
rede é um grupo de pelo menos dois computadores conectados para que eles possam
se comunicar compartilhando recursos e informações com maior rapidez e
praticidade.

Segundo Forouzan (2008, p. 07), redes de computadores são uma coleção


dispositivos (comumente conhecidos como nós) conectados por link. Um nó pode ser
um computador, impressora ou outro dispositivo enviando e/ou recebendo dados que
são para outros nós na rede.

Uma rede de computadores permite que o usuário compartilhe uma enorme


quantidade de informações e enviem mensagens uns aos outros, incluindo textos,
imagens, áudios e vídeos.
9

3. FUNDAMENTOS DA COMUNICAÇÃO DE DADOS EM REDE (CONCEITOS


GERAIS)

No auge da Guerra Fria, o Departamento de Defesa dos Estados Unidos queria


uma rede de comando e controle capaz de sobreviver a uma guerra nuclear.

Naquela época, todas as comunicações militares passavam pela rede


telefônica público, consideradas vulneráveis. Por sua vez, esses centros de
comutação foram conectados a centros de comutação de nível superior (centros
interurbanos), criando uma hierarquia nacional com pouca redundância. Aa
vulnerabilidade se dava ao fato de que a destruição de algumas usinas desconexões
de longa distância poderiam fragmentar o sistema em muitas ilhas isoladas

Vários pesquisadores iniciaram seus estudos nessa época no MIT, no Rand


Institute e no National Physical Laboratory. A união dos três trabalhos fez surgir o
projeto ARPA (Agência de Projetos de Pesquisa Avançada), que deu origem
à ARPAnet, precursora da grande rede mundial, a internet, foi a primeira rede de
computadores do mundo.

Os primeiros computadores foram chamados de IMPs (Interface Message


Processors). No mesmo ano em que o homem pisou na lua, em 1969, foi instalado o
primeiro IMP na Universidade da Califórnia, com três IMPs adicionais.

Em 1970, começaram a surgir novas redes de computação de pacotes, como a


ALOHAnet, rede de micro-ondas por rádio que interligava as ilhas do Havaí, e a
TELENET, rede de interligação de pacotes comerciais baseada na tecnologia da
ARPAnet.

O número de pequenas redes foi crescendo tanto que Robert Metcalfe


apresentou os princípios de uma rede local, a ETHERNET, que depois deram origem
a LANs de curta distância, com supervisão da DARPA (Agência de Projetos de
Pesquisa Avançada de Defesa).

Nesse período, também foi criado o protocolo TCP (Transmission Control


Protocol), responsável por enviar os pacotes em sequência e de forma confiável. Com
10

o tempo, o serviço foi sendo modificado e o TCP ficou responsável por organizar a
chegada dos pacotes, enquanto o IP tem a função de envio e o UDP controla o fluxo
de voz.

No final daquela década, cerca de 200 computadores já estavam conectados à


ARPAnet, principalmente porque ela foi usada para a comunicação entre os militares
durante a Guerra Fria. Terminada essa época, a ARPAnet deixou de ser interessante
para eles e foi transferida para as universidades.

O Brasil entrou na rede em 1990 criando a RNP (rede nacional de pesquisas).


Em 1992 foi criada a Internet Society e já existiam 200 servidores web em operação,
nesta época as pesquisas estavam mais voltadas para o desenvolvimento de
browsers com interface gráfica, por exemplo, Marx Andreesen com a versão beta do
GUIMosaic em 1993 e James Baker com a Mosaic Communications em 1994 que
mais tarde transformou-se na Netscape Communications Corporation. Também nesta
época a Embratel disponibilizou o acesso à rede de empresas e usuários particulares.

Em 1990, a ARPANET se aposentou oficialmente e foi substituída pela


NSFNET. A NSFNET restaurou seu conceito original de rede de pesquisa em 1995.
Em 1991, o governo dos EUA decidiu que a NSFNET não poderia suportar o crescente
tráfego da Internet. Três empresas, IBM, Merit e Verizon estabeleceram um uma
organização sem fins lucrativos chamada Advanced Network & Service (ANS) que
visava estabelecer uma nova rede de backbone da Internet de alta velocidade, essa
velocidade é chamada de Advanced Network Services Network (ANSNET). Devido ao
surgimento da World Wide Web (WWW), os anos 90 testemunharam o crescimento
explosivo de aplicativos da Internet. A rede foi inventada por Tim no CERN Berners-
Lee e adicionado a Internet.

Atualmente, a Internet não é uma estrutura hierárquica única. Ela é composta


por várias redes locais e remotas, reunidas por meio de dispositivos de conexão e
estações comutadoras. É difícil termos uma representação precisa da Internet, pois
ela está em contínua mutação – novas redes são acrescentadas, redes existentes
adicionaram continuamente novos endereços e redes de empresas extintas são
eliminadas. Na atualidade, a maioria dos usuários que deseja conexão com a Internet
11

utiliza os serviços de Provedores de Acesso à Internet (ISPs). Há provedores


internacionais, nacionais, regionais e locais. Hoje em dia, a Internet é operada por
empresas privadas, não pelo governo. (FOROUZAN, 2008, p. 17)

3.1 O QUE SÃO REDES DE COMPUTADORES?

A evolução tecnológica e a consequente diminuição dos custos dos


computadores tornaram cada vez mais atraentes a distribuição do poder
computacional em módulos processadores localizados em diversos pontos de uma
organização. A necessidade de interconexão desses módulos processadores, para
permitir o compartilhamento de recursos de hardware e software e a troca de
informação entre seus usuários, criou o ambiente propicio para o desenvolvimento
das redes de computadores.

Rede, é uma estrutura que dispõe de um padrão característico. Um


computador, por sua vez, é uma máquina eletrônica que processam dados e que
possibilita a execução de diversas sequências ou rotinas indicadas pelo utilizador.
Redes de computadores refere-se a interconexão por meio de um sistema de
comunicação baseado em transmissões e protocolos de vários computadores com o
objetivo de trocar informações, além de outros recursos. Essa conexão é chamada de
estações de trabalho (nós, pontos ou dispositivos de rede).

Forouzan (2008, p. 07) reconhece que uma rede é um conjunto de dispositivos


(normalmente conhecido como nós) conectados por links de comunicação. Um nó
pode ser um computador, uma impressora ou outro dispositivo de envio e/ou recepção
de dados, que estejam conectados a outros nós da rede.

Forouzan e Mosharraf (2003, p. 01) descrevem a rede como um meio de


transmissão de dados com ou sem fio. Olifer & Olifer (2008, p. 04) provam que as
redes de computadores também podem ser consideradas um meio de transmissão de
informações a longa distância. Para isso as redes de computadores implementam
diversos métodos de codificação de dados e multiplexação amplamente adotados nos
sistemas de telecomunicações.
12

Olifer & Olifer (2008, p. 04) provem a influência das redes de computadores
sobre outros tipos de redes de telecomunicações, onde resultou em uma convergência
de redes, um processo que começou muito antes da internet. As redes são divididas
em duas categorias principais: redes locais (LANs) e redes remotas (WANs). Esses
dois tipos têm diferentes características e diferentes funcionalidades. A Internet é um
conjunto de redes LANs e WANs interconectadas por dispositivos de ligação entre
elas. Sua composição é formada por cinco componentes essenciais, que são:

Mensagem: As mensagens são as informações a serem transmitidas. Entre as


formas populares de informação, temos: texto, números, figuras, áudio e vídeo.

Emissor: O emissor é o dispositivo que envia a mensagem de dados. Pode ser


um computador, estação de trabalho, aparelho telefônico, televisão e assim por diante.

Receptor: O receptor é o dispositivo que recebe a mensagem. Pode ser um


computador, estação de trabalho, aparelho telefônico, televisão e assim por diante.

Meio de transmissão: O meio de transmissão é o caminho físico pelo qual uma


mensagem trafega do emissor ao receptor. Alguns exemplos de meio de transmissão
são os seguintes: cabo par traçado, cabo coaxial, cabo de fibra ótica e ondas de rádio.

Protocolo: O protocolo é um conjunto de regras que controla a comunicação de


dados. Representa um acordo entre os dispositivos de comunicação. Sem um
protocolo, dois dispositivos podem estar conectados, mas, sem se comunicar. De
modo semelhante, uma pessoa que fala francês não consegue entender outra que
fala apenas o idioma japonês.

Independentemente da escala e complexidade, o objetivo básico de uma rede


de computadores é garantir que todos os recursos de informações sejam
compartilhados com rapidez, segurança e confiabilidade. Portanto, a rede deve ter
meios eficazes de transmissão, regras básicas (protocolos) e mecanismos para
garantir a transmissão de informações entre seus elementos constituintes.

Em nossa definição Rede de computadores é um aglomerado de software e


hardware que permite a comunicação de diversos dispositivos, transmitindo e
13

compartilhando informação. A internet é uma rede, ela interliga vários dispositivos que
se comunicam entre si.

Exemplos Hardware

- Computadores, Smartphones, roteadores, servidores, switches.

Exemplos Software

- TCP/IP, HTTP, OpenFlow, Browsers, e-mail.

3.2 TIPOS DE REDES

Outro critério para classificação redes de é quanto ao seu tamanho. A figura a


seguir mostra a classificação. A parte superior é a rede pessoal, ou seja, uma rede
para uma pessoa. Por exemplo, a rede sem fio que conecta um computador a um
mouse, teclado e impressora é uma rede pessoal. Essas redes podem ser divididas
em redes locais, metropolitanas e geograficamente distribuídas (ou remotas).
Finalmente, a conexão de duas ou mais redes é chamada de inter-rede. A Internet
mundial é um exemplo famoso da inter-rede.

Imagem 01 – Classificação de processadores por escala.

Fonte: sites.google.com/site/estudandoredes/capitulo-01---introducao/1-2-hardware-de-rede,
2017
14

3.2.1 LAN (Local Area Network) – Rede de área local

São os tipos de redes utilizadas para realizar a conexão de 1 grupo de


computadores com a finalidade de trocar informações entre eles este tipo de rede tem
denominação de local por cobrir apenas uma área de 10km no máximo.

Em uma rede local a principal tarefa é conectar as estações de trabalho,


servidores, periféricos e dispositivos que têm a capacidade de trocarem informações
pela rede.

Uma rede local é normalmente é composta por:

Servidores - Na maioria das vezes são computadores com alto índice de


capacidade de processamento e armazenamento de informações e que têm como
principal função compartilhar um determinado tipo de serviços para as estações de
trabalho que estão conectadas à rede. Muitos servidores tem como principal objetivo
promover diversos tipos de serviços como e-mail, internet, firewall, proxy, impressões
etc.

Estações - As estações de trabalho são conhecidas como clientes de rede elas


têm como principal função executar tarefas locais e acessar os serviços
disponibilizados pelos servidores de rede.

Sistemas operacionais de rede - É um software que tem como função dar


suporte à rede, esses sistemas estão divididos em duas classes: clientes e servidores.
O sistema cliente é um sistema que executa tarefas básicas para acessar uma rede
compartilhar pequenas funções. Já o sistema servidor é um sistema que executa
várias funções de controles e seguranças para disponibilizar aos clientes.

Meio de transporte - É a forma pela qual as informações vão ser enviados pela
rede, os meios mais utilizados do hoje são os ethernet e wireless que podem variar
da velocidade de 10 as 10000Mbps.
15

Protocolo de comunicação - É o idioma pelo qual os dispositivos, clientes e


servidores vão se comunicar. Para que essa comunicação ocorra é preciso que todos
os dispositivos estejam trabalhando com o mesmo protocolo.

3.2.2 MAN (Metropolitan Area Network) – Rede de Área Metropolitana

Redes metropolitanas são redes de alcance médio, constituídas por várias


LAN’s interligadas na mesma cidade.

Este tipo de rede é comum em instituições com várias delegações espalhadas


em uma cidade, podemos usar como exemplo a Prefeitura que que muitas vezes
trabalha com um sistema interligado, ligando as unidades básicas de saúde e outros
setores que muitas vezes não ficam no mesmo prédio que a prefeitura.

Este tipo de rede trabalha na mesma maneira que uma LAN, mais a diferença
é o alcance dessa rede e os meios de comunicação que ela utiliza para montar a rede.

3.2.3 WAN (Wide Area Network) Rede Geograficamente Distribuída ou Rede de


Longa Distância

Este é um tipo de rede que abrange uma grande área geográfica, que pode ser
um estado, um país e até mesmo continente. Este tipo de rede é que deu o grande
crescimento para Internet. Mas a grande utilização dessa rede é por empresas que
vão crescendo e acabam necessitando de expandir com filiais franquias em diversos
países, estados e até mesmo na própria cidade.

Neste tipo de rede, devemos observar alguns pontos para o seu funcionamento
correto:

Tráfego – O tráfego deve ser sempre bem observado porque, devido ao


aumento que elas (WAN’s) sempre oferecem, acabam surgindo os
congestionamentos do que está sendo transportado na rede. Para definir as
características deste tráfego têm a qualidade e serviços (QoS). O tráfego da rede deve
ser sempre modelado através de medições com o grau de resolução elevado.
16

QoS (Quality of Service) – É uma expressão utilizada para definir a qualidade


de serviço usada de uma WAN para determinar o tráfego com as tecnologias IP, ATM,
Frame-Relay, etc. A qualidade do serviço é definida pela capacidade em que a rede
tem em transferir os dados de forma consistente e previsível, satisfazendo as
necessidades das aplicações dos usuários da rede.

3.3 PROTOCOLOS DE REDE

Como já se viu até o momento, as informações podem e são amplamente


trocadas das redes. Entretanto só é possível essa comunicação graças à existência
dos protocolos de rede. Os protocolos são processos organizacionais que
regularizam, organizam e otimizam a comunicação. Sem eles, não seria possível, por
exemplo, dentro de uma rede, saber quem enviou ou para quem uma determinada
informação ou dado é enviada.

A seguir examinaremos duas importantes arquiteturas de rede, o modelo de


referência OSI e o modelo de referência TCP/IP. Embora os protocolos associados ao
modelo OSI raramente sejam usados nos dias de hoje, o modelo em si é de fato
bastante geral e ainda válido, e as características descritas em cada camada ainda
são muito importantes. O modelo TCP/IP tem características opostas: o modelo
propriamente dito não é muito utilizado, mas os protocolos têm uso geral.

3.4 MODELO DE REFERÊNCIA OSI - OPEM SYSTEMS INTERCONNECTION

Da experiencia obtida nos projetos de rede, vários princípios surgiram,


possibilitando que novos projetos fossem desenvolvidos de uma forma mais
estruturada que os anteriores. Dentre esses princípios se destaca a ideia de estruturar
a rede como um conjunto de camadas hierárquicas, cada uma sendo construída
utilizando as funções e serviços oferecidos pelas camadas inferiores.

O modelo de referência OSI é um modelo de rede de computador dividido em


sete camadas, sendo que cada uma delas realizam funções na comunicação de rede.
Em cada camada está localizado protocolos que realizam diferentes trabalhos,
dependendo da necessidade.
17

Este modelo em sete camadas foi fornecido por Charles Bachman. A evolução do
projeto OSI começou a partir de experiência com a ARPANET, a Internet incipiente, a
NPLNET, o EIN, o CYCLADES e também com o trabalho em IFIP WG6.1.

Cada camada deve ser pensada como um programa ou processo, implementado


por hardware ou software, que se comunica com o processo correspondente na outra
máquina. As Regras que governam a conversação de um nível N qualquer são
chamadas de protocolo de nível N.

O protocolo em níveis é a maneira mais eficiente de se estruturar uma rede. Uma


vez definida claramente a interface entre os diversos níveis, uma alteração na
implementação de um dos níveis pode ser realizada sem causar impacto na estrutura
global.

Embora o modelo OSI da ISO possa ser usado tanto em redes de longa distância
ponto em redes locais, ele foi, em princípio pensado para o uso em redes de longa
distância.

Imagem 02 - MODELO OSI

Fonte: https://www.iperiusbackup.net/pt-br/entendendo-os-conceitos-entre-os-modelos-tcpip-e-osi/
18

3.4.1 CAMADA FÍSICA

Esta camada trata da sinalização de rede, e da conversão de bits (advindos das


camadas superiores) em sinais elétricos, ópticos ou ainda em ondas eletromagnéticas
para envio pelos diversos meios de transmissão utilizados, carregando os dados de
um ponto a outro da rede. Define os aspectos mecânicos e elétricos da rede. É o nível
onde atuam as interfaces (placas) de rede.

3.4.2 CAMADA DE LIGAÇÃO DE DADOS (ENLACE)

Nesta camada temos a organização dos dados a serem enviados em conjuntos


de bits denominados Quadros (Frames), e é aqui que especificamos os endereços
físicos das interfaces de rede envolvidas na comunicação (endereços MAC). Um
endereço MAC é responsável pela identificação única dos dispositivos em uma rede,
consistindo em um endereço gravado em uma memória ROM presente na própria
interface física de rede.

Também é responsável pela sinalização de início e fim de transmissão de um


quadro, além de gerar um código para reconhecimento de erros de transmissão de
dados, conhecido como Checksum.

3.4.3 CAMADA DE REDE

Esta camada introduz a capacidade de rotear o tráfego de um ponto da rede a


outro, por meio de sub redes, e por isso podemos chamar essa camada de camada
de roteamento. Aqui, podemos aplicar um esquema de endereçamento lógico aos
pontos de rede, como por exemplo o endereço IP (que estudaremos nas lições sobre
TCP/IP).

Nesta camada também pode ocorrer fragmentação dos dados a serem


transmitidos, caso o tamanho desses dados exceda um limite pré-determinado, de
modo que segmentos de rede que não suportem quadros de tamanho muito grande
possam também enviar os dados sem problemas.
19

O PDU da camada de rede é chamado de Pacote (como por exemplo, em Pacote


IP). Um PDU (Protocol Data Unit) é um nome dado a um conjunto de dados presentes
em uma determinada camada de uma pilha de protocolos.

3.4.4 CAMADA DE TRANSPORTE

No geral, a camada de transporte tem o papel de fornecer funções que permitam


a comunicação entre processos de aplicações (softwares) entre computadores
diferentes. Assim, a camada de transporte fornece um mecanismo pelo qual diversas
aplicações distintas podem enviar e receber dados usando a mesma implementação
de protocolos das camadas mais baixas.

Na camada de transporte damos o nome de Segmento a um PDU que contenha


dados TCP, e Datagrama a um PDU que contenha dados UDP. Estudaremos esses
protocolos em suas lições específicas, quando tratarmos da pilha TCP/IP.

3.4.5 CAMADA DE SESSÃO

Nesta camada é efetuada a configuração das sessões de comunicações entre os


dispositivos na rede. Aqui, uma sessão de comunicação pode ser iniciada, mantida e
finalizada quando não houverem mais dados a transmitir, ou quando uma das partes
quiser encerrar a comunicação. Além disso, permite o sincronismo e restabelecimento
de uma sessão de comunicações a partir do ponto onde houve um problema de
interrupção na transmissão. O PDU aqui é chamado simplesmente de Dados (Data),
assim como nas camadas 6 e 7.

3.4.6 CAMADA DE APRESENTAÇÃO

Esta camada lida com as técnicas de apresentação dos dados, o que significa
basicamente que ela é responsável pela forma como os dados são reconhecidos e
visualizados em seu destino. Como exemplos de suas atribuições, temos a
codificação de caracteres, compressão e criptografia de dados.
20

3.4.7 CAMADA DE APLICAÇÃO

Esta é a camada de mais alto nível (conceitualmente), e é a responsável por


fornecer os serviços de rede às aplicações que rodam no computador. Assim, seu
navegador ou seu programa de e-mails acessa a rede pois é capaz de se comunicar
com a camada de aplicação da pilha de protocolos.

3.5 MODELO DE REFERÊNCIA TCP/IP ("TRANSMISSION CONTROL PROTOCOL/


INTERNET PROTOCOL")

Após a criação das redes de rádio e satélite, começaram os problemas com os


acordos existentes, o que forçou a criação de novas arquiteturas de referência.
Portanto, a capacidade de conectar várias redes de maneira unificada desde o início
é um dos principais objetivos do projeto. Devido a seus dois protocolos principais,
essa arquitetura foi posteriormente chamada de modelo de referência TCP / IP.

O modelo TCP/IP ("Transmission Control Protocol / Internet Protocol") é um


modelo de referência que possui quatro camadas, o objetivo é manter intacta a
conexão entre transmissor e receptor.

O modelo TCP/IP, quando comparado com o modelo OSI, tem duas camadas que
se formaram a partir da fusão de algumas camadas, ela são: as camadas de Aplicação
(Aplicação, Apresentação e Sessão) e Rede (Link de dados e Física).

A camada de rede (Hardware) - É responsável por inserir e receber os pacotes


TCP/IP no caminho de rede. O modelo TCP/IP é independe do método de acesso a
rede ou de outra tecnologia de rede especifica. Utilizando o TCP/IP para conectar em
diferentes tipos de rede.

A camada de internet (IP) - É responsável pelo endereçamento de internet do


hospedeiro, empacotamento e encaminhamentos de funções. Essa camada é a
primeira normatizada do modelo. É responsável pelo endereçamento, roteamento e
controle de envio e recepção. Ela não é orientada à conexão, se comunica através de
datagramas.
21

Camada de transporte (TCP/UDP) - Camada fim a fim, isto é, uma entidade desta
camada só se comunica com a sua entidade-par do host destinatário. É nesta camada
que se faz o controle da conversação entre as aplicações intercomunicadas da rede.
Dois protocolos são usados aqui: o TCP (orientado à conexão) e o UDP (não orientado
à conexão). É responsável pela transferência de dados entre duas máquinas,
assegurando que os dados sejam entregues de forma confiável.

A camada de aplicação - Fornece as aplicações acesso a serviço de outras


camadas. É formada pelos protocolos utilizados pelas diversas aplicações do modelo
TCP/IP. Esta camada não possuí um padrão comum.

Imagem 03 – Modelo de Referência TCP/IP

IMAGEM 2 Fonte: https://pplware.sapo.pt/tutoriais/redes-quais-diferencas-protocolo-tcp-udp/

Exemplo:

• Aplicação: WWW (navegação web), HTTP, SMPT (e-mails), FTP (transferência


de arquivos) e SSH. Usada pelos programas para enviar e receber dados de
outros programas pela própria internet.
22

• Transporte: TCP, UDP e SCTP. Responsável por transportar os arquivos


recebidos da camada anterior. Aqui acontece a organização e a transformação
deles em pacotes menores, que serão enviados à rede.
• Rede: IP (IPv4 e IPv6). Os arquivos empacotados na camada anterior são
recebidos e anexados ao IP da máquina que envia e que recebe os dados.
Daqui eles são enviados pela internet usando a próxima camada.
• Estrutura Física: Ethernet e Modem. É a camada que, enfim, executa o
recebimento ou o envio de arquivos na web.

3.6 TCP

O TCP é um protocolo da camada de transporte confiável, ele é baseado em


conexão encapsulada no IP. O TCP garante a entrega dos pacotes, assegurada o
“sequenciamento” dos pacotes e providencia um “checksum” que válida tanto o
cabeçalho, quanto os dados do pacote. No caso da rede perder ou corromper um
pacote TCP/IP durante a transmissão, é tarefa do TCP retransmitir o pacote faltoso
ou incorreto. Essa confiabilidade torna o TCP/IP o protocolo escolhido para
transmissões baseadas em sessão, aplicativos cliente-servidor e serviços críticos.

Os cabeçalhos dos pacotes TCP requerem o uso de Bits adicionais para


segurar o correto “sequenciamento” da informação, bem com um “checksum”
obrigatório para garantir a integridade do cabeçalho e dos dados. Para garantia da
entrega dos pacotes, o protocolo requisita que o destinatário informe através de um
envio de um “acknowledgement”, para que seja confirmado o recebimento.

3.7 IP

O IP é o protocolo da camada Internet. Ele é encarregado da entrega de


pacotes para todos os outros protocolos da família TCP/IP. Ele oferece um sistema
de entrega de dados sem conexão. Isto é, os pacotes IP não são garantidos de
chegarem ao seu destino, nem de serem recebidos na ordem em que foram enviados.
O “checksum” do IP confirma apenas a integridade do cabeçalho do pacote.
23

O endereço IP é formado por números de 32 Bits no formato “nnn.nnn.nnn.nnn”


em que “nnn” pode variar de 0 até 255 (1 octeto = 8 Bits). Os endereções possuem
uma classificação que varia de acordo com o número de sub-redes e de hosts. Tal
classificação tem por finalidade otimizar o roteamento de mensagens na rede. Pelo
menos em teoria é possível construir uma rede de computadores com até
4.294.967.296 endereços IP (256 elevado à quarta potência), isso porque alguns
endereços são reservados e não podem ser usados.

O principal critério para o endereçamento IP de uma rede é a exclusividade dos


endereços. Duas máquinas não podem ter o mesmo endereço, pois caso contrário
ocorre um conflito na rede e os dispositivos conflitantes não poderão se comunicar.
Quanto maior for a rede, mais difícil será a configuração de endereços de IP uma vez
que a possibilidade de repetição de um endereço já utilizado aumenta
proporcionalmente.

3.8 UDP

O protocolo UDP é a segunda opção da camada de transporte, sendo que ele


não é confiável, pois não implementa “acknowledgement”, “janelas” e nem
“sequenciamentos”, o único controle feito é o “checksum” opcional que está dentro do
seu próprio “header”, ele é utilizado em aplicações que não vão gerar altos volumes
de tráfego de internet.

3.9 MÁSCARA DE REDE

Este é um item de configuração para redes. Sua função consiste em informar


quais partes do endereço IP identificam as redes e as máquinas. A máscara é
informada por 32 Bits, assim como acontece com o endereço IP. Cada bit 1 identifica
a parte do endereço IP que é usada para identificar a rede, enquanto que os Bits
assinalados com 0 identificam as máquinas.
24

3.10 PROTOCOLO

Toda atividade de comunicação na internet é governada por protocolos, os


protocolos definem regras e estabelecem os formatos e a ordem das mensagens. As
ações a serem tomadas na transmissão e recepção das mensagens.

3.11 TIPOS DE PROTOCOLO

Protocolo TCP/IP

TCP/IP é o acrônimo de dois protocolos combinados: o TCP (Transmission


Control Protocol, que significa Protocolo de Controle de Transmissão) e IP (Internet
Protocol, que significa Protocolo de Internet).

Protocolo HTTP

HTTP é a sigla para Hypertext Transfer Protocol, que significa Protocolo de


Transferência de Hipertexto. Ele é o mais básico e usado para navegação em sites da
internet.

Protocolo HTTPS

HTTPS é a sigla para Hyper Text Transfer Secure, que significa Protocolo de
Transferência de Hipertexto Seguro.

Protocolo DHCP

DHCP é o acrônimo para Dynamic Host Configuration Protocol, que significa, em


português adaptado, Protocolo de Configuração Dinâmica de Endereços de Rede. Ele
permite que os computadores consigam um endereço de IP automaticamente.

O protocolo DHCP funciona de três maneiras diferentes. São elas:

- Automática. Um IP é definido automaticamente para uma máquina que se


conecta
25

- Dinâmica. recebe um IP dinâmico pelo período em que continuar conectado.

- Manual. O protocolo DHCP define um IP para uma máquina de acordo com o


valor de MAC.

Protocolo FTP

FTP é a sigla para File Transfer Protocol, que significa Protocolo de Transferência
de Arquivos. Ele surgiu antes mesmo do padrão TCP/IP, que é a base das conexões
de internet. E é o modo mais simples de transferir dados entre duas máquinas pela
rede.

Protocolo SFTP

SFTP é a sigla para Simple File Transfer Protocol, que significa Protocolo de
Transferência Simples de Arquivos. Ele é, basicamente, o protocolo FTP com uma
camada de proteção a mais aos arquivos transferidos.

Protocolo SSH

SSH é a sigla para Secure Shell que, em português adaptado, significa Bloqueio
de Segurança. É um dos protocolos específicos de segurança de troca de arquivos
entre cliente e servidor.

Protocolo POP3

POP3 é o acrônimo para Post Office Protocol 3, que significa, excluindo o número,
Protocolo de Correios. Ele é usado para mensagens eletrônicas, ou seja, os populares
e-mails.

Protocolo SMTP

SMTP é a sigla para Simple Mail Transfer Protocol, que significa Protocolo de
Transferência de Correio Simples. Diferente do POP3, o protocolo SMTP é voltado
para o envio de mensagens eletrônicas (e-mails).
26

Protocolo IMAP

IMAP é o acrônimo para Internet Message Access Protocol, que significa


Protocolo de Acesso à Mensagem de Internet. Assim como os dois anteriores, o
protocolo IMAP também é voltado para envio e recebimento de e-mails.

3.12 ESTRUTURA DE REDE

• Borda da rede: aplicações e hospedeiros


• Núcleo da rede: roteadores e rede de redes
• Redes de acesso, meio físico: enlaces de comunicação

3.13 TOPOLOGIAS DE REDES

É considerado o layout físico da rede. Existem diversas topologias que são


utilizadas para a montagem de uma rede. Quando vamos montar uma rede, devemos
escolher o tipo de topologia adequado de acordo com as aplicações que serão
executadas na rede. Para avaliar isso devemos observar os seguintes fatores:
estabilidade, velocidades, confiabilidade e custo. Desses fatores, os que mais são
importantes são o custo, que vai determinar realmente qual tipo de rede se aplica, e a
distância entre os nós.

Topologia Ponto a Ponto

A topologia ponto e aponto é a base para formação de topologias por ser a mais
simples, ela pode ser representada por dois computadores interligados entre si
através de um meio de transmissão. Normalmente esse tipo de rede é utilizada em
residências e pequenas empresas onde costuma-se ter apenas dois computadores.
27

Imagem 04 – Referência topologia Ponto a Ponto

Fonte: https://sites.google.com/site/topologiasderedexd/topologia-ponto-a-ponto

Topologia em Barramento

Na topologia de rede em barramento todos os computadores estão ligados em


vários cabos no mesmo meio de transmissão. Apenas uma máquina por vez pode
escrever no barramento. Enquanto isso as outras” escutam” e recolhem os dados
destinados para elas. Quando a rede estiver transmitindo um sinal a rede fica
ocupada, se outro computador enviar outro sinal, ocorre uma colisão e é preciso
reiniciar a transmissão. Este tipo de rede também tem a grande vantagem por ter um
custo de instalação barato. Mas a grande desvatagem é que quanto mais
compuadores forem sendo concetados à rede, elavai ficando lenta, quando um cabo
desconecta ou falha, a rede para em determinados pontos, alem de existir uma
dificuldade muito grande para detectar onde estão as falhas.

Imagem 05 – Referência topologia em Barramento

FONTE: https://estudoderedes.wordpress.com/tag/redes-barramento/

Topologia em Anel ou Ring

A topologia em anel são vários computadores interligados entre si em um percurso


fechado, onde o sinal circula na rede passando de uma estação para outra formando
um anel.
28

A rede em anel não é interligada diretamente às estações, mas são ligadas em


repetidores por um meio físico.

Elas são capazes de transmitir e receber dados em qualquer direção, mas os


projetos mais utilizados para esse tipo de rede são os unidirecionais, assim eles não
precisam de roteadores e de uma forma menos sofisticada os protocolos asseguram
a entrega das mensagens corretamente.

Sua grande vantagem é que ela utiliza um cabo só, e com isso seu custo de
instalação é considerado baixo.

Já sua desvantagem também consiste em torno de possuir somente um cabo,


pois caso este seja rompido toda a rede para de funcionar.

Imagem 06 – Referência topologia em Anel

FONTE: https://pt.wikipedia.org/wiki/Rede_em_anel

Topologia Estrela

Esse tipo de rede é o mais utilizado hoje, todas as estações são conectadas por
um concentrador (hub ou switch) principal. Através esse concentrador todas as
estações podem se comunicar entre si e com estações remotas e terminais.

A grande vantagem da utilização de uma rede em estrela é que cada estação se


comunica diretamente com o nó central, assim se ocorrer algum problema de
comunicação com a estação, apenas ela estará parada, enquanto as demais estações
29

continuarão trabalhando normalmente. Já sua grande desvantagem é a questão de


custo, esse tipo de rede acaba tendo um custo elevado e é um pouco mais demorada
para sua implementação devido a quantidade de cabos que devem ser passados.

Mas se analisarmos a questão custo benéfico entre as demais topologias, o custo


acaba sendo um fator que não afeta na escolha desse tipo de rede devido à sua
facilidade de manutenção, pois quando uma das estações pararem, todas as outras
continuam funcionando.

Imagem 07 – Referência topologia em Estrela

FONTE: https://inforticsite.wordpress.com/topologia-de-rede-star/
30

Topologia em Árvore

A topologia em arvore é parecida com a topologia estrela, a diferença entre elas


é que só existe um no raiz que é interconectado aos demais nós. É utilizada
principalmente na ligação de Hub’s e repetidores.

Imagem 08 – Referência topologia em Árvore

FONTE: https://estudoderedes.wordpress.com/2012/04/22/topologia-de-redes/

Estrutura Mista ou Hibrida

É uma estrutura que tem ligações ponto a ponto e múltiplo ponto obtendo redes
complexas com um maior número de recursos. A estrutura mista pode conter outras
topologias como a barra, anel, estrela etc.

Imagem 09 – Referência topologia Mista

FONTE: https://www.diegomacedo.com.br/topologias-de-rede-de-computadores/
31

3.14 VoIP (Voice Over IP)

VoIP é a tecnologia que permite estabelecer conversações telefônicas em uma


rede IP, tornando a transmissão de voz mais um dos serviços suportados pelo
protocolo IP.

A grande vantagem dessa tecnologia é que muitas empresas hoje estão


conseguindo economizar uma fortuna em ligações interurbanas e internacionais
graças a essa tecnologia. A tecnologia VoIP transforma os sinais de voz que são
analógicos em pacotes digitais para transmissão pelo protocolo de Internet. Estes
pacotes são compactados para transmissão, mas ao chegar ao destino são
descompactados e convertidos em sinais sonoros para o receptor.

3.15 Socket

A interface socket se iniciou como uma parte do ambiente UNIX e apareceu na


Universidade de Berkeley no início dos anos 80. Se trata de um conjunto de instruções
que fornecem comunicação entre a camada de aplicação e o sistema operacional.
Esse conjunto de instruções permite que um processo possa se comunicar com outro
processo.

A ideia de socket nos permitir usar todos os conjuntos de instruções projetados


em linguagens de programação para outros dispositivos de entrada e saída. Por
exemplo, na maioria das linguagens de programação, há instruções para ler e gravar
dados em dispositivos de entrada e saída. Podemos usar as mesmas instruções para
ler ou escrever em sockets, ou seja, apenas adicionamos novas entidades de entrada
e saída à linguagem de programação sem alterar a maneira como os dados são
enviados ou recebidos.
32

Imagem 10 – Posição da interface Socket

Fonte: https://www.treinaweb.com.br/blog/uma-introducao-a-tcp-udp-e-sockets/

Embora um socket deva se comportar como um terminal ou arquivo, ele não é


uma entidade física como eles, mas uma abstração; é uma estrutura de dados criada
e usada pelos aplicativos. Pode-se dizer que, para a camada de aplicação, a
comunicação entre o processo-cliente e o processo-servidor é limitada à comunicação
entre dois sockets como uma entidade que recebe a solicitação e envia uma resposta:
o servidor trata o socket como aquele que possui uma solicitação e precisa de uma
resposta. Se criarmos dois sockets em cada sistema de terminal e definirmos
corretamente os endereços de origem e destino, podemos usar as instruções
disponíveis para enviar e receber dados. O restante é de responsabilidade do sistema
operacional e dos protocolos TCP/IP que ele contém.

Imagem 11 - Uso de sockets na comunicação cliente-servidor

Fonte: https://www.treinaweb.com.br/blog/uma-introducao-a-tcp-udp-e-sockets/
33

4. DESENVOLIMENTO

Para o desenvolvimento do software foram usadas duas máquinas, a primeira


é um desktop com processar Ryzen 7 1700, 16gb RAM 2400MHz, 480gb SSD M.2
nvme no Windows 10 Pro 64bits e o segundo equipamento é um notebook I5 3330m,
6gb RAM 1333MHz 240gb SSD Windows 10 Pro, esse equipamento foi usado pra
testar o software. Programa desenvolvido em Java usando Eclipse com interface
gráfica JOptionPane e Word para documentação.

Linguagem de programação

A linguagem de programação definida foi a Java. Utilizamos a IDE Eclipse para


realizar a programação, é uma ferramenta de desenvolvimento para a plataforma
Java. Ela contém todo o ambiente necessário para a criação e execução de aplicações
Java, incluindo a máquina virtual Java, o compilador Java, as APIs do Java e outras
ferramentas utilitárias para uma melhor funcionalidade.
34

5. PROJETO DO PROGAMA

Servidor

Responsável pelo Server Socket, ele que vai receber a mensagem do Client e
repassar para outros Clients na conectados na mesma rede.

Métodos do Servidor

“main”: Aqui é instanciado uma tela usando JOptionPane para pegar o valor da
porta para subir uma conexão na rede, em seguida uma nova JOptionPane para
confirmar que a conexão foi estabelecida e um laço while que fica rodando direto
aguardando novo usuários se conectarem, para cada usuário uma nova thread é inicia
dessa forma permitindo várias pessoas no mesmo chat.

“Servidor”: método construtor onde são instanciados os objetos input,


inputReader e buffReader, aqui ele recebe o objeto conexão como um parâmetro para
a criação do buffReader que aponta para o socket do Cliente.

“Envia”: Dentro do método existe um objeto do tipo BufferedWriter, ele fica em


um laço foreach que percorrendo a lista de usuários conectados na rede e printa na
tela do chat a mensagem enviada.

“Run”: aloca um novo cliente a uma thread e fica “escutando” novas mensagens
no servidor, quando uma mensagem chegar o método envia será acionado e enviará
a mensagem para a tela de chat.

Cliente

Classe responsável pelo Client Socket, para cada usuário o server criar uma
thread possibilitando vários usuários se comunicarem pela mesma rede. A classe se
conecta com o server, manda o que foi digitado e escreve o que foi recebido do
servidor.
35

Métodos Cliente

“main”: Onde é instanciado o objeto chat do tipo Cliente que chama os métodos
conecta e escutar.

“Cliente”: Aqui ficam duas telas,a primeira é a tela de login, basicamente é um


formulário JOptionPane para pegar o IP e Porta do servidor e o nome do usuário para
criar o objeto login. A segunda é a tela de chat que consiste em um JTextArea texto
que fica dentro de um JScrollPane onde serão exibidas as mensagens enviadas e
recebidas, um JTextField textMesagem que é o campo onde o usuário digita e um
JButton btnEnviar com uma ActionListener e uma KeyListener para enviar a
mensagem tanto apertando o botão ou apertando Enter no teclado.

“conectar”: Conecta o usuário ao socket do servidor, aqui são criados os


streams de comunicação.

“enviarMensagem”: Método que envia as mensagens para o servidor e tem a


trigger para enviar as mensagens apertando Enter.

“escutar”: Esse método recebe as mensagens do servidor e fica recebendo


enquanto a conexão não for interrompida ou desconectada.

“sair”: Aqui encerra o socket e para todos os objetos de escuta e escrita


(buffWrite, write, output e socket).

“actionPerformed”: Nesse método são recebidas as ações dos botões


instanciados nas telas.

“keyPressed”: Scaner que detecta quando o usuário pressiona Enter para


enviar a mensagem sem precisar apertar no btnEnviar.
36

5.1 TELAS DO PROGRAMA EM FUNCIONAMENTO

Ao iniciar o programa primeiramente deve-se inicializar o servidor ao qual será


efetuada a conexão de usuários. Aqui pede-se que seja digitada a porta a qual o
servidor será direcionado.

Imagem 12 - Tela de Servidor

Fonte: Própria, 2020

Após o servidor estar conectado e ao se iniciar a classe Cliente, é exibida a tela


para que o usuário que deseja se conectar preencha seus dados. Nela é requerido o
endereço de IP a porta a qual o servidor está direcionado, já previamente preenchida
na classe Servidor e o Nome do usuário.
37

Imagem 13 - Tela de dados do usuário

Fonte: Própria, 2020

No Campo de IP é necessário que todos os usuários que desejam realizar uma


conversação entre si preencham o campo com o mesmo endereço.

Após o preenchimento correto dos dados abre-se a janela de chat para os


usuários, no nosso exemplo utilizamos os nomes Bot_01 e Bot_02 para realizar os
testes.
38

Imagem 14 – Janelas de chat

Fonte: Própria, 2020

As mensagens enviadas devem ser recebidas pelo remetente e vice-versa.

Imagem 15 – Simulação de uma conversa

Fonte: Própria, 2020


39

6. CONCLUSÃO

Tendo visto o tema abordado, pudemos mostrar e aplicar os conceitos de


socket de rede usando protocolo TCP/IP e a aplicação do modelo OSI com nosso
projeto de comunicação via rede entre múltiplos usuários. Com o desenvolvimento do
software, aplicamos os conhecimentos obtidos durando o curso e vimos como é o
princípio de muitos sistemas de comunicação da atualidade como aplicativos de
mensagens, que sem esse tipo de tecnologia a informação seria transmita de uma
forma muito devagar retardando tanto o desenvolvimento tecnológico quando social.

Ao final conseguimos concluir o proposto, desenvolver um software para fazer


comunicação instantânea via rede. Com o decorrer do processo encontramos
algumas dificuldades como a implementação de interface gráfica. Além de existirem
alguns pontos que podem ser melhorados, como uma forma de verificar portas livres
para subir o servidor e validar portas que já estão em uso.
40

7. CÓDIGO FONTE

Classe Servidor

package APS_rede.src.teste_socket;
//package teste_socket;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

//@author jorge

public class Servidor extends Thread {

private static ArrayList<BufferedWriter> clientes;


private static ServerSocket server;
private String nome;
private InputStream input;
private InputStreamReader inputReader;
private BufferedReader buffReader;
private Socket conexao;

public static void main(String[] args) {


// TODO Auto-generated method stub

try {
// Cria os objetos necessário para instânciar o servidor
JLabel lblPorta = new JLabel("Porta do Servidor:");
JTextField textPorta = new JTextField("5572");
Object[] porta = { lblPorta, textPorta };
ImageIcon img = new ImageIcon("img.png");
41

JOptionPane.showMessageDialog(null, porta, "Servidor


Secretaria do Meio Ambiente",
JOptionPane.INFORMATION_MESSAGE, img);

server = new ServerSocket(Integer.parseInt(textPorta.getText()));


clientes = new ArrayList<BufferedWriter>();

JOptionPane.showMessageDialog(null,
"Conectado ao Servidor da " + "Secretaria do Meio
Ambiente: " + textPorta.getText());

while (true) {
Socket con = server.accept();
System.out.println("Conectou...");
Thread thread = new Servidor(con);
thread.start();
}

} catch (Exception e) {
e.printStackTrace();
}

public Servidor(Socket conexao) {


this.conexao = conexao;
try {
input = conexao.getInputStream();
inputReader = new InputStreamReader(input);
buffReader = new BufferedReader(inputReader);
} catch (IOException e) {
e.printStackTrace();
}
}

/***
* Método usado para enviar mensagem para todos os clients
*/
public void envia(BufferedWriter buffSaida, String mensagem) throws
IOException {
try {
BufferedWriter buffWrite;
for (BufferedWriter bw : clientes) {
buffWrite = (BufferedWriter) bw;
if (!(buffSaida == buffWrite)) {
bw.write(nome + " : " + mensagem + "\n");
bw.flush();
}
42

} catch (Exception e) {
// TODO: handle exception
e.getStackTrace();
}
}

public void run() {

try {

String mensagem;
OutputStream output = this.conexao.getOutputStream();
Writer write = new OutputStreamWriter(output);
BufferedWriter buffWrite = new BufferedWriter(write);
clientes.add(buffWrite);
nome = mensagem = buffReader.readLine();

while (!"Sair".equalsIgnoreCase(mensagem)) {
mensagem = buffReader.readLine();
envia(buffWrite, mensagem);
System.out.println(mensagem);
}

} catch (Exception e) {
e.printStackTrace();

}
}

Classe Cliente

package APS_rede.src.teste_socket;
//package teste_socket;

import java.awt.Color;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
43

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

//@author jorge

public class Cliente extends JFrame implements ActionListener, KeyListener {

private static final long serialVersionUID = 1L;


private JTextArea texto;
private JTextField textMenssagem;
private JButton btnEnviar;
private JPanel pnlContent;
private Socket socket;
private OutputStream output;
private Writer write;
private BufferedWriter buffWrite;
private JTextField textIP;
private JTextField textPorta;
private JTextField textNome;

public static void main(String[] args) throws IOException {


try {

Cliente chat = new Cliente();


chat.conectar();
chat.escutar();

} catch (Exception e) {
// TODO: handle exception
e.getStackTrace();
}
}

public Cliente() throws IOException {


44

// Login
setResizable(false);
JLabel lblMessagem = new JLabel("Informe os dados");
textIP = new JTextField("");
textPorta = new JTextField("5572");
textNome = new JTextField("");
ImageIcon img = new ImageIcon("img.png");
Object[] Mensagem = {lblMessagem, "IP", textIP, "Porta", textPorta,
"Nome", textNome,
JOptionPane.INFORMATION_MESSAGE, img};
JOptionPane.showMessageDialog(null, Mensagem, "Usuário",
JOptionPane.INFORMATION_MESSAGE);

// Chat
pnlContent = new JPanel();
textMenssagem = new JTextField(20);
textMenssagem.setBounds(11, 236, 174, 20);

btnEnviar = new JButton("Enviar");


btnEnviar.setBounds(189, 235, 79, 23);
btnEnviar.setToolTipText("Enviar Mensagem");

pnlContent.setLayout(null);

JScrollPane scroll = new JScrollPane();


scroll.setBounds(11, 5, 257, 210);
pnlContent.add(scroll);

texto = new JTextArea(10, 20);


scroll.setViewportView(texto);
texto.setEditable(false);
texto.setBackground(new Color(240, 240, 240));
texto.setLineWrap(true);

btnEnviar.addActionListener(this);
btnEnviar.addKeyListener(this);
textMenssagem.addKeyListener(this);

pnlContent.add(textMenssagem);
pnlContent.add(btnEnviar);
pnlContent.setBackground(SystemColor.menu);

setTitle(textNome.getText());
setContentPane(pnlContent);
setLocationRelativeTo(null);
setSize(285, 298);
setVisible(true);
45

setDefaultCloseOperation(EXIT_ON_CLOSE);
}

//Sobe o servidor
public void conectar() throws IOException {

socket = new Socket(textIP.getText(),


Integer.parseInt(textPorta.getText()));
output = socket.getOutputStream();
write = new OutputStreamWriter(output);
buffWrite = new BufferedWriter(write);
buffWrite.write(textNome.getText() + "\n");
buffWrite.flush();

public void enviarMensagem(String mensagem) throws IOException {

if (mensagem.equals("Sair")) {
buffWrite.write("Desconectado \n");
texto.append("Desconectado \n");
} else {
buffWrite.write(mensagem + "\n");
texto.append(textNome.getText() + " : " +
textMenssagem.getText() + "\n");
}
buffWrite.flush();
textMenssagem.setText("");
}

public void escutar() throws IOException {

InputStream input = socket.getInputStream();


InputStreamReader inputReader = new InputStreamReader(input);
BufferedReader bfr = new BufferedReader(inputReader);
String mensagem = "";

while (!"Sair".equalsIgnoreCase(mensagem))

if (bfr.ready()) {
mensagem = bfr.readLine();
if (mensagem.equals("Sair"))
texto.append("Desconectado! \n");
else
texto.append(mensagem + "\n");
}
}
46

public void sair() throws IOException {

enviarMensagem("Sair");
buffWrite.close();
write.close();
output.close();
socket.close();
System.exit(0);
}

@Override
public void actionPerformed(ActionEvent e) {

try {
if
(e.getActionCommand().equals(btnEnviar.getActionCommand()))
enviarMensagem(textMenssagem.getText());

} catch (IOException a) {
// TODO Auto-generated catch block
a.printStackTrace();
}
}

@Override
public void keyPressed(KeyEvent e) {
// enviar apertando ENTER
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
try {
enviarMensagem(textMenssagem.getText());
} catch (IOException b) {
// TODO Auto-generated catch block
b.printStackTrace();
}
}
}

@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}

@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}

}
47

8. REFERÊNCIAS BIBLIOGRAFICAS

MELLO, Alessandra. A origem da comunicação por Redes de Computadores. [S.


l.], 1 nov. 2019. Disponível em: https://ead.catolica.edu.br/blog/tag/redes-de-
computadores. Acesso em: 17 mar. 2020.

FOROUZAN, B. A. Comunicação de Dados e Redes de Computadores. 04. ed.São


Paulo: Amgh Editora, 2008. 1168 p.

FOROUZAN, B. A; MOSHARRAF, F. Redes de Computadores: uma abordagem


top-down. 01. ed. Rio Grande do Sul: Bookman, 2012. 89 p.

OLIFER, N; OLIFER, V. Redes de Computadores – Princípios, Tecnologias e


Protocolos para o Projeto de Redes. 01. ed. São Paulo: LTC, 2008. 576 p.

WIKILIVROS (org.). Redes de computadores/História da Internet. [S. l.], 25 jun.


2014. Disponível em:
https://pt.wikibooks.org/wiki/Redes_de_computadores/Hist%C3%B3ria_da_Internet.
Acesso em: 17 mar. 2020.

FIGUEIREDO, IRIA LUPPI. História das redes de computadores. [S. l.], 10 out.
2014. Disponível em: https://www.oficinadanet.com.br/post/10123-historia-das-redes-
de-computadores. Acesso em: 30 mar. 2020.

TEDESCO, Kennedy. Uma introdução a TCP, UDP e Sockets. [S. l.], 19 jun. 2019.
Disponível em: https://www.treinaweb.com.br/blog/uma-introducao-a-tcp-udp-e-
sockets/. Acesso em: 28 abr. 2020.
48

9. FICHAS DE HORAS
49
50

Você também pode gostar