Unix Domain Socket Tutorial

July 18

Unix fornisce una tecnologia nota come socket di dominio per facilitare la comunicazione tra processi diversi e anche le diverse applicazioni. Una delle stranezze di un socket di dominio Unix è che sembra di applicazioni ad essere un file. Tuttavia, la presa non è mai memorizzato sul disco rigido e il suo posto nel sistema di file viene semplicemente utilizzato come marcatore. I dati possono essere scritti e letti da un socket di dominio Unix dalla maggior parte dei principali linguaggi di programmazione che supportano i socket. Rubino rende il processo particolarmente facilmente, permettendo che i concetti da dimostrare senza essere oscurato da tutta la complessità di programmazione socket in C ++.

istruzione

1 Aperti due nuovi documenti con il vostro editor di testo preferito. Per mantenere le cose dritto, andare avanti e salvare il primo con il nome "udsServer.rb" e l'altro con il nome "udsClient.rb." Come si potrebbe sospettare, il server di gestire la creazione e la scrittura alla presa e il cliente si collega alla presa e ricevere un messaggio dal primo.

2 Incollare il seguente in usdServer.rb:

/ Usr / bin / ruby

require 'presa'

s = UNIXServer.open ( "/ mytestsocket")

client = s.accept

client.puts "Ciao, il mio caro amico".

s.close

File.unlink ( "/ mytestsocket")

Il codice esegue le seguenti operazioni: in primo luogo, dice il vostro sistema operativo Unix che si tratta di uno script Ruby. Potrebbe essere necessario cambiare questa linea se il sistema operativo Unix installato Rubino in un'altra directory. È possibile trovare la directory digitando ", che Ruby" in un terminale.

Successivamente, la libreria socket viene caricata. Poi, UnixServer crea un socket nel file "mytestsocket." Questo file sarà effettivamente visibile nel vostro terminale BASH, se si cura di guardare, anche se non sarà in grado di leggere e scrivere da esso. E 'quindi attende un altro script per la connessione e, quando lo fa, invia un messaggio amichevole. Infine, chiude il socket e "separa il" la presa dal file system.

Questo è tutto per il server, ora è il momento di scrivere il cliente.

3 Incollare il seguente nel documento udsClient.rb:

/ Usr / bin / ruby

require 'presa'

s = UNIXSocket.open ( "/ mytestsocket")

mette s.readline

s.close

Anche in questo caso, la prima riga indica Unix cosa fare con il codice e la seconda linea carica la libreria presa. Poi, una presa si apre allo stesso "file" che il codice server utilizza. Il messaggio viene letto, e la connessione alla presa chiusa.

4 Aprire il terminale e digitare quanto segue:

rubino udsServer.rb

Non succederà nulla, perché il server è attualmente seduto, in attesa che il programma client per la connessione. Assicurarsi di lasciare questo aperto terminale.

5 Aprire un'altra copia del vostro terminale e disporre la finestra in modo da poter vedere entrambi i terminali in una sola volta. Digitare quanto segue:

rubino udsClient.rb

Si dovrebbe vedere immediatamente l'uscita finestra del server e la finestra del client visualizzano il messaggio amichevole inviato ad esso dal server. Se cercate il file presa, sarà ora scomparso.

Consigli e avvertenze

  • La maggior parte delle versioni moderne di Unix sono dotati di Rubino pre-installato. Tuttavia, se la vostra versione di Unix non lo fa, è certo di essere all'interno del vostro repository software Unix. Consultare la documentazione su come installare il nuovo software dal repository per la versione di Unix.