Resumo de Sistemas Distribuidos Sockers com Threads
Por: Antonino Calisto Neto • 11/5/2016 • Resenha • 1.275 Palavras (6 Páginas) • 545 Visualizações
[pic 1]
UNIVERSIDADE FEDERAL DO PIAUÍ – UFPI
CAMPUS SENADOR HELVÍDIO NUNES DE BARROS – CSHNB
CURSO BACHARELADO EM SISTEMAS DE INFORMAÇÃO
Aluno: Antonino Calisto dos Santos Neto
Pesquisa De Sistemas Distribuídos
Pesquise sobre desenvolvimento e implementação de Sockets – Threads e RPC. Trazer em escrito. Pesquise sobre desenvolvimento e implementação de Sockets – Threads e RPC. Trazer em escrito. No mínimo 4 folhas e Máximo 5.
Em Suma, sockets são utilizados, em sua maioria, para comunicar programas usando descritores de arquivos Unix padrão. Os descritores Unix, podem realizar qualquer tipo de entrada ou saída, através de algum tipo de descritor de arquivo (caracterizado por um inteiro associado a um arquivo aberto, podendo ser uma conexão de rede, FIFO, um terminal, entre outros). Tudo no descritor Unix é um arquivo, portanto, quando se quiser manter uma conexão (comunicação) com outro programa online (internet), basta realizar chamadas de socket send(), caracterizando o envio, e recv(), caracterizando o recebimento dos dados.
Apesar de ser um arquivo, é aconselhável usar send() e recv() para comunicação via internet, pois o read() e write(), mesmo sendo arquivos, onde pode-se escrever e ler, partindo do ponto de transmissão online de dados, os dois primeiros citados, iriam obter um melhor desempenho.
Existem diversos tipos de sockets, sendo os mais conhecidos, os Stream Sockets (SS) e Datagram Sockets (DS). O SS utiliza o Telnet, pois através dele os caracteres digitados poderão chegar em ordem. O SS também é utilizado no protocolo HTTP para receber páginas.
Os SS possui um ótimo rendimento na transmissão de dados porque utilização um protocolo TCP, conhecido como protocolo de controle de transmissão, assegurando assim que os dados cheguem em ordem e livres de erros. Diferente do SS, o DS utiliza o protocolo UDP, que utiliza o IP (Internet Protocol), porém sem conexão constante.
A diferença de um manter conexão e o outro manter, é pelo fato de situações não dependerem tanto de uma conexão continua, o que diminuiria o uso da banda de internet, como o caso de transmissões de vídeo, em que aceita-se que o destinatário da mensagem seria um ser humano, que iria entender a mensagem (poucos pixel de vídeos perdidos), e iriam entender a mensagem passada mesmo assim, ao contrário de uma solicitação de páginas web, em que o destinatário é o próprio servidor, que precisa-se de uma conexão contínua.
Se um pacote for perdido, e não obter uma resposta, será enviado outro pacote para suprir a perda do pacote antes enviado. A resposta é chamada de ACK (Recebido), caso não receber esse pacote, o SS irá mandar outro pacote.
Umas das linguagens que pode ser utilizada para implementação da programação com sockets, é a linguagem JAVA. A comunicação de rede nessa linguagem pode ser implementada pelo pacote java.net. As classes dessa biblioteca, por sua vez, implementam os sockets que pode ser em unicast (em que se utiliza apenas um único de destinatário) ou multcast (em que utiliza-se mais de um destinatário).
O funcionamento de uma conexão via sockets acontece da seguinte maneira:
- Um servidor irá ficar aguardando conexões com as portas abertas;
- O cliente deve tomar conhecimento prévio do endereço do servidor (IP) ou de seu nome (Hostname) e a porta;
- O cliente deve solicitar uma conexão ao servidor;
- Se durante o processo acima, não houver nenhum erro, o servidor irá aceitar a conexão, gerando um socket em uma outra porta qualquer do seu lado, que será o canal de comunicação entre o cliente e o servidor.
A programação com sockets em JAVA utiliza duas classes: o Socket (soquete de dados) e o ServerSocket (soquete do servidor).
O ServerSocket, irá ter construtor chamado de ServerSocket(int port) onde será criado o socket especificando a porta. Nessa função, terá alguns métodos importantes accept(), responsável por aguardar uma conexão, retornando um objeto da classe Socket, que representa a conexão estabelecida.
O close(), fecha a conexão, e isClosed() indica que o socket está fechado. Outro método é o getInetAddress() que retorna o endereço do servidor através de um objeto da classe InetAddress.
...