Unix erbjuder en teknik som kallas domänsockets att underlätta kommunikationen mellan olika processer och även olika tillämpningar . En av de underligheter i en Unix domain socket är att det verkar att ansökan ska vara en fil . Dock är uttaget aldrig lagras på hårddisken och dess plats i filsystemet används helt enkelt som en markör . Data kan skrivas till och läsas från en Unix domain socket från de flesta stora programmeringsspråk som stöder uttag . Ruby gör processen särskilt lätt , vilket gör att begreppen skall påvisas utan att skymmas av den fulla komplexiteten i socket programmering i C + + . Instruktioner
1
öppna två nya dokument med din favorit texteditor . Att hålla saker rakt , gå vidare och spara den första med namnet " udsServer.rb " och den andra med namnet " udsClient.rb . " Som ni kanske misstänker , kommer servern hanterar skapandet och skriva till uttaget och kunden kommer att ansluta till uttaget och får ett meddelande från den första
2
Klistra in följande i usdServer.rb . :
# /usr /bin /ruby
kräver " socket "
s = UNIXServer.open ( " /mytestsocket " ) katalog
client = s . acceptera
client.puts " Hej , min käre vän . "
s.close
File.unlink ( " /mytestsocket " ) katalog
koden utför följande åtgärder : först , berättar det ditt Unix-operativsystem att detta är en Ruby skript . Du kan behöva ändra den här raden om din Unix OS installerat Ruby till en annan katalog . Du kan hitta katalogen genom att skriva " som Ruby" i en terminal .
Därefter socket biblioteket laddad . Sedan skapar UnixServer ett uttag i filen " mytestsocket . " Denna fil kommer faktiskt att vara synlig i din BASH terminal , om du bryr dig att titta , men du kommer inte att kunna läsa och skriva från den . Den väntar sedan på ett annat skript att ansluta och , när den gör det , skickar ett vänligt meddelande . Slutligen stänger det uttaget och " unlinks " uttaget från filsystemet .
Det är det för servern , nu är det dags att skriva klienten .
3
Klistra in följande i udsClient.rb dokumentet :
# /usr /bin /ruby
kräver " socket "
s = UNIXSocket.open ( " /mytestsocket " ) katalog
sätter s.readline
s.close
Återigen , berättar den första raden Unix vad du ska göra med din kod och den andra laster linje uttaget bibliotek . Då är en uttag öppnas för samma " filen" att servern koden använder. Meddelandet läses , och anslutningen till uttaget stängt
4
Öppna din terminal och skriv följande : .
Ruby udsServer.rb
Ingenting kommer att hända , eftersom servern är för närvarande sitter och väntar på din klient för att ansluta . Var noga med att lämna denna terminal öppen .
5
Öppna en annan kopia av din terminal och ordna fönstret så att du kan se båda terminaler samtidigt . Skriv följande :
ruby udsClient.rb
Du bör omedelbart se serverfönstret exit och klienten fönstret visar den vänliga meddelandet skickas till det av servern . Om du letar efter uttaget filen , kommer den nu vara borta .