2012-02-22 20 views
7

Nie mogę znaleźć dobrej informacji na temat obsługi gniazd domenowych Unix w Haskell. Potrzebuję prostej funkcji, aby otworzyć gniazdo i napisać do niego polecenie. Czy ktoś może mi pomóc z poradą, gdzie przeczytać o tym, a może podać przykład?Haskell: Unix Domeny gniazd

Zasadniczo muszę portu tę prostą funkcję Ruby (czy to pomaga zrozumieć, co mam na myśli):

def monitor(string_command) 
    require "socket" 
    socket = File.join($vbase, @name, "monitor.soc") 
    raise RuntimeError, "Monitor socket does not exst!" unless File.exist? socket 
    begin 
    UNIXSocket.open(socket) do |s| 
     s.puts string_command 
     s.flush 
    end 
    rescue 
    return false 
    end 
    true 
end 

Wszystko robi otwiera gniazdo i pisze polecenie to prawdziwy powrót na sukces. Dziękuję.

+0

są 2 przykłady podane w 'Network.Socket.ByteString'. – qubital

+0

Dzięki. Udało mi się zebrać bity informacyjne za pomocą bitów. –

+6

Należy udzielić odpowiedzi jako odpowiedzi i zaakceptować ją, aby pytanie to nie pojawiło się bez odpowiedzi. – singpolyma

Odpowiedz

8

Myślę, że to wymyśliłem. Cóż, działa i robi to, czego potrzebuję, więc myślę, że powinno to teraz zrobić.

Oto fragment (bez kontroli błędów) jeśli ktoś potrzebuje coś podobnego:

monitor n c = do 
    soc <- socket AF_UNIX Stream 0 
    connect soc (SockAddrUnix (vmBaseDir </> n </> "monitor.soc")) 
    send soc (C++ "\n") 
    sClose soc 
Powiązane problemy