Você está na página 1de 9

Instituto Superior de Transportes e

Comunicações

Licenciatura em Engenharia Informática e de Telecomunicações.

.
Programação III

Trabalho em Grupo Nº1

Tema: Sockets e Threads .

Discentes:

Vasco Matavele, Francisco Gabriel

Turma: I2 3
2
Ano: 2º

Docente: Eng. Edmilson Alar

Maputo, Setembro de 2021

1
Índice

Objectivos.....................................................................................................1
Introducao.....................................................................................................1
Sockets..........................................................................................................2
ServerSocket.................................................................................................3
Threads..........................................................................................................3
Objectivos
 Desenvolver um chat que envia e recebe mensagens pela
mesma rede;
 Entender os conceitos de Sockets e Threads

Introducao

Com a constante necessidade de trabalhar em ambientes


distribuídos surgiram alternativas, em Java, para que isso fosse
possível. Uma dela em que estudaremos neste artigo é a Socket.
Há diversos artigos e tutoriais na internet explicando como
funciona o Socket e como realizar a conexão Cliente-Servidor,
mas nosso objetivo vai mais além, pois queremos mostrar o
funcionamento de cada método nessa poderosa classe e como
utilizá-lo.

1
Sockets

De acordo com a própria Oracle: “Socket é um ponto de


comunicação entre duas máquinas”, ou seja, podemos enviar mensagens
entre a máquina A e a máquina B através de uma conexão estabelecida com
o Socket.
Para que essa comunicação seja possível nós precisamos criar a
classe Servidor que é responsável por esperar a conexão do cliente e a
classe Cliente que irá conectar-se no Servidor.

O pacote java.net contém duas classes – Socket e ServerSocket – que


implementam, respetivamente, o cliente e o servidor numa ligação. Uma
aplicação servidor é executada numa determinada máquina e tem um
socket ligado a uma porta específica dessa máquina. O servidor espera que
um cliente faça um pedido de ligação através desse socket.

O servidor ao aceitar a ligação cria um novo socket para uma porta


diferente (e assim permite novas ligações). No lado do cliente um socket é
criado e é usado para comunicar com o servidor (numa porta disponível na
máquina cliente).

O pacote java.net contém a classe Socket que esconde todos os


detalhes particulares a cada sistema. Ainda tem uma segunda classe,
SocketServer, que implementa a parte de servidor.

2
ServerSocket
O método de aceitação espera até que um cliente seja inicializado e
solicite uma conexão no host e na porta deste servidor.
A classe ServerSocket é usada para fornecer implementação
independente do sistema do lado do servidor de uma conexão de Socket
cliente / servidor. O construtor para ServerSocket lança uma exceção se
não puder escutar na porta especificada (por exemplo, a porta já está
sendo usada).
É amplamente utilizado para as aplicações da classe
java.net.ServerSocket que é a seguinte:
1. No canal java.nio, a classe ServerSocket é usada para recuperar
um serverSocket associado a este canal.
2. Em java.rmi.Server, a classe ServerSocket é usada para criar um
soquete de servidor na porta especificada (a porta 0 indica uma
porta anônima).
3. Em javax.net, o soquete do servidor é amplamente usado para:
 retornar um soquete de servidor não acoplado.
 retornar um soquete de servidor vinculado à porta
especificada.
 retorna um soquete de servidor vinculado à porta
especificada e usa a lista de pendências de conexão
especificada.
 retornar um soquete de servidor vinculado à porta
especificada, com uma lista de espera de escuta
especificada e IP local.

3
Threads
Thread é um termo recorrente nas fichas técnicas de processadores e virou
até nome de chip, com o AMD Threadripper. Entender esse conceito é
importante na hora de comprar uma nova CPU, já que pode indicar se um
modelo vale ou não a pena para o tipo de uso desejado. Thread, em inglês,
significa "fio" ou "linha", e no contexto dos microprocessadores representa uma
ordem de execução, com instruções encadeadas que são desempenhadas uma por
vez.
Thread, representa uma instância da CPU da máquina virtual Java, e
que tem associada um trecho de código que será executado, e uma área de
memória. Podemos criar uma Thread em Java de duas maneiras:
Estendendo o comportamento da classe Thread. Implementando a interface
Runnable.
Em Java, usamos a classe Thread do pacote java. lang para criarmos
linhas de execução paralelas. A classe Thread recebe como argumento um
objeto com o código que desejamos rodar.
Threads em Java podem ser criadas das seguintes maneiras: Fazendo
“extend” da classe Thread. Implementando a interface Runnable. thread.

Em várias situações, precisamos rodar duas coisas ao mesmo tempo.


Imagine um programa que gera um relatório muito grande em PDF. É um
processo demorado, e, para dar alguma satisfação ao usuário, queremos
mostrar uma barra de progresso. Desejamos, então, gerar o PDF e ao
mesmo tempo atualizar a barrinha.
Pensando um pouco mais amplamente, quando usamos o computador,
também fazemos várias coisas simultaneamente: queremos navegar na
internet e ao mesmo tempo ouvir música.
A necessidade de se fazer várias coisas paralelamente aparece com
frequência na computação. Para vários programas distintos, normalmente o
próprio sistema operacional gerência isso por meio de
vários processos simultâneos.
Em um programa só (um processo só), se queremos executar coisas em
paralelo, normalmente falamos de Threads.

Implementação de threads
1. Frequentemente, você precisa implementar seus próprios threads.

4
2. Isso é feito dentro do método run() do thread que especifica o
comportamento do thread.
3. A class Thread implementa um thread que não faz nada (run() está
vazio)
4. Discutimos duas formas de especificar o que fazer no método run()

5
Conclusão

Depois de realizar este trabalho e durante a pesquisa pudemos concluir que


os sockets são de extrema importância pois desenvolve aplicações em java
que podem comunicar-se via rede local ou via internet, e podem ser
utilizados nos mais variados sistemas operacionais com recursos de
comunicação em redes e são suportadas pela maioria das linguagens de
programação existentes.

6
Bibliografia
https://link.springer.com/chapter/10.1007/978-1-4020-7870-5_68
devmedia.com.br/como-criar-um-chat-multithread-com-socket-em-java/33639
https://edisciplinas.usp.br/pluginfile.php/3441398/mod_resource/content/1/Threads.pdf
https://www.caelum.com.br/apostila-java-orientacao-objetos/apendice-programacao-
concorrente-e-threads
https://www.techtudo.com.br/noticias/2019/01/o-que-sao-threads-e-para-que-servem-
em-um-processador.ghtml
https://www.geeksforgeeks.org/java-net-serversocket-class-in-java/
https://www.baeldung.com/a-guide-to-java-sockets
https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html

Você também pode gostar