Stream sockets

Com streams, o socket tem a mesma funcionalidade que datagrams, mas com a diferença que uma conexão é criada entre o pipe do client e o pipe do server.

Nesta conexão, é implementado um conjunto de procedimentos de pergunta-resposta para garantir que a mensagem é entregue em sua totalidade e na ordem correta.

Com isto, podemos dizer que stream sockets utilizam uma conexão, ao passo que datagram sockets não utilizam uma conexão.

Por padrão, o comando nc trabalha com sockets de conexão, portanto para criarmos um socket stream basta removermos a opção -u, opção esta que utilizamos para criar datagram sockets na última seção.

## Server
$ nc -Ulv server.sock
Bound on server.sock
Listening on server.sock

Note que agora, vemos uma mensagem "Listening on server.sock", que significa que o server está à espera de novas conexões no socket.

Para criar o client, o processo é o mesmo, não utilizando a opção -u:

$ nc -Uv server.sock

Resumo

Até aqui, conseguimos entender UNIX sockets e a diferença entre datagram e stream.

So far so good, mas os processos estão sempre no mesmo computador. Indo um pouco mais além, seria possível que 2 processos isolados em computadores distintos se comunicassem?

Sim, caso os computadores estejam conectados na mesma rede local (LAN) ou em uma rede global de computadores (Internet).

Um UNIX socket por si só não resolve IPC entre 2 processos em computadores distintos conectados numa rede local ou global.

Vamos, então, explorar outras opções de IPC para processos em computadores distintos nas próximas seções deste guia.

Last updated