Unix fornece uma tecnologia conhecida como soquetes de domínio para facilitar a comunicação entre os diferentes processos e até mesmo diferentes aplicações. Uma das curiosidades de um soquete do domínio Unix é que parece a aplicações para ser um arquivo . No entanto, a tomada nunca é armazenado no disco rígido e seu lugar no sistema de arquivos é simplesmente usado como um marcador . Os dados podem ser gravados e lidos a partir de um soquete do domínio Unix da maioria das linguagens de programação principais que suportam sockets. Rubi faz o processo especialmente facilmente , permitindo que os conceitos de ser demonstrado sem ser obscurecido por toda a complexidade da programação de socket em C + +. Instruções
um
Abrir dois novos documentos com o seu editor de texto favorito . Para manter as coisas simples , vá em frente e salvar o primeiro com o nome de " udsServer.rb " e outro com o nome de " udsClient.rb ". Como você pode suspeitar , o servidor irá lidar com a criação e gravação para o soquete e o cliente irá se conectar ao soquete e receber uma mensagem do primeiro
2
Cole o seguinte em usdServer.rb . :
# /usr /bin /ruby
require ' tomada ' em
s = UNIXServer.open ("/mytestsocket " )
= cliente s . aceitar
client.puts "Olá, meu querido amigo . "
s.Close
File.unlink ("/mytestsocket " )
O código realiza as seguintes operações : em primeiro lugar, ele diz o seu sistema operacional Unix que este é um script Ruby . Pode ser necessário alterar esta linha se o seu sistema operacional Unix instalado Ruby para outro diretório. Você pode encontrar o diretório , digitando " que ruby" em um terminal.
Em seguida, a biblioteca de sockets é carregado. Então , UnixServer cria um socket no arquivo " mytestsocket ". Este arquivo será realmente visível em seu terminal bash, se você se importa de olhar , mas você não será capaz de ler e escrever a partir dele. Em seguida, ele espera por um outro script para se conectar e , quando o faz, envia uma mensagem amigável. Finalmente, ele fecha o soquete e " desvincula " A tomada do sistema de arquivos .
Isso é que é para o servidor , agora é hora de escrever o cliente .
3
cole o seguinte no documento udsClient.rb :
# /usr /bin /ruby
require ' tomada ' em
s = UNIXSocket.open ("/mytestsocket " )
coloca s.readline
s.Close
Novamente, a primeira linha diz Unix o que fazer com o seu código ea segunda linha carrega a biblioteca socket. Em seguida , um socket é aberto para o mesmo " arquivo " que o código do servidor está usando . A mensagem é lida, ea conexão com o socket fechado
4
Abra o terminal e digite o seguinte: .
Rubi udsServer.rb
Nada vai acontecer , porque o servidor está sentado , à espera de seu programa cliente para se conectar. Certifique-se de deixar esse terminal aberto .
5
Abra outra cópia do seu terminal e organizar a janela para que você possa ver os dois terminais ao mesmo tempo. Digite o seguinte :
rubi udsClient.rb
Você deve ver imediatamente a saída janela do servidor ea janela do cliente exibir a mensagem amigável que lhe foi enviado pelo servidor. Se você olhar para o arquivo socket, ele será agora desaparecido.