Obecnie śledzę numer Cloud-Haskell tutorial i utknęło pod numerem createTransport
. Wydaje mi się, że mogę otworzyć tylko transport w wersji 127.0.0.1 dla serwera i nie mogę otworzyć transportu dla klienta, aby połączyć się z serwerem. Próbowałem użyć dwóch maszyn, używając adresu curl ifconfig.me
, aby uzyskać mój adres IP, jednak createTransport
nie utworzyłby dla mnie transportu. Jakieś pomysły?Jak korzystać z createTransport?
EDYCJA: lokalnie działa.
Mój program jest dokładnie taka sama jak w tutorialu, starając się łączyć między dwoma komputerami:
curl ifconfig.me
powraca 101.119.27.24
wiersza polecenia dla serwera:
ServerClientServer 101.119.27.24 9000
Błąd zwracany:
bind: unsupported operation (Cannot assign rerquested address)
EDIT:kod serwera, jak następuje:
main :: IO()
main = do
[host, port] <- getArgs
serverDone <- newEmptyMVar
Right transport <- createTransport host port
Right endpoint <- newEndPoint transport
forkIO $ echoServer endpoint serverDone
putStrLn $ "Echo server started at " ++ show (address endpoint)
readMVar serverDone `onCtrlC` closeTransport transport
W echoServer
i onCtrlC
funkcje określone w inny moduł.
Zmieniłem Right transport <- createTransport host port
do
t <- createTransport host port defaultTCPParameters
let transport = case t of
(Right t) -> t
(Left e) -> error $ show e
tak, że mogę zobaczyć, co jest komunikat o błędzie.
Czy możesz podać nam kod, który nie działa zgodnie z oczekiwaniami? Co powiesz na "createTransport iNADDR_ANY" 3000 "defaultTCPParameters"? –
Z którym serwerem współpracujesz? Ostatni raz, kiedy użyłem tego projektu, był back-end dla lokalnej pracy sieciowej. Od tego czasu widziałem wersję peer to peer pojawiającą się na hackage i jedną lub dwie inne. – Davorak
Backend jak w pakiecie? network-transport-tcp-0.3.1 – HHC