Sockets permitem a comunicação entre sistemas através de protocolos como TCP e UDP. Portas definem os serviços em cada máquina e clientes/servidores usam requisições e respostas para transferir dados, geralmente serializados em bytes.
2. Protocolo
● É um meio pelo qual é estabelecida a comunicação entre
dois pontos ou mais em um determinado contexto
● É uma convenção que controla e possibilita uma conexão,
comunicação, transferência de dados entre dois sistemas
computacionais
● Exemplos: TCP, UDP, HTTP, FTP, SSH, TELNET, SMTP,
etc
3. Portas
● Diversos computadores se conectam com um processo
● Diversos processos se comunicam com um computador
● Portas definem que tipo de serviço funcionará em
determinada máquina
● Portas são numeros inteiros entre 0 e 65535
4. Cliente/Servidor
● Cada instância de um cliente pode enviar requisições de
dado para algum dos servidores conectados e esperar pela
resposta
● Servidores podem aceitar tais requisições, processá-las e
retornar o resultado para o cliente
● Apesar do conceito ser aplicado em diversos usos e
aplicações, a arquitetura é praticamente a mesma
5. Servidor
● Para o uso de um serviço remoto (em outra máquina) é
preciso que esse serviço seja disponibilizado por uma porta
● A API java.net do java tem ferramentas que auxiliam o uso
da comunicação via sockets
6. Cliente
● Para consumir um serviço remoto (servidor) é necessario
enviar uma requisição para uma porta em uma determinada
máquina remota
● Novamente o API java.net também tem suporte para o
consumo de serviços remotos
7. Streaming
● Mas como receber/enviar as requisições e receber as
respostas?
● Assim como vimos na aula de IO, os dados são
transmitidos via streaming.
8. Serialização
● Serialização de Objetos, permitem que os mesmo sejam
representados por uma sequencia de bytes, que contém os
dados de um objeto, seus tipos e valores
● ObjectInputStream e ObjectOutputStream, são classes de
straming de alto nivel que lidam com a serialização e
deserialização de objetos
● Para que um objeto possa ser serializado, ele deve
implementar a interface java.io.Serializable