2013-04-18 13 views
5

Şu anda Cloud-Haskell tutorial takip ediyorum ve createTransport durumunda kalıyor. Bana göre sadece sunucu için 127.0.0.1'de bir nakliye açabiliyorum ve sunucuya bağlanmak için istemci için bir nakil açamıyorum. IP adresimi almak için curl ifconfig.me kullanarak iki makine kullanmayı denedim, ancak createTransport benim için bir taşıma oluşturmaz. Herhangi bir fikir?createTransport nasıl kullanılır?

DÜZENLEME: lokal olarak şimdi çalışıyor.

curl ifconfig.me döner sunucu için 101.119.27.24

Komut satırı:

ServerClientServer 101.119.27.24 9000 

Hata döndürdü:

Programım iki makine arasında bağlanmaya çalışırken, öğretici ile aynı olup

bind: unsupported operation (Cannot assign rerquested address) 

DÜZENLEME: sunucu kodu takip gibidir:

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 

echoServer ve onCtrlC işlevleri bir modülde tanımlanır. Ben hata mesajı ne olduğunu görebilmesi için

Ben

t <- createTransport host port defaultTCPParameters 
let transport = case t of 
    (Right t) -> t 
    (Left e) -> error $ show e 

içine Right transport <- createTransport host port değiştirdi. açıklamalara dayanarak

+0

beklendiği gibi çalışmaya başarısız bazı kod ile bize verebilir misiniz? "CreateTransport iNADDR_ANY" 3000 "defaultTCPParameters' hakkında ne dersiniz? –

+0

Hangi arka uçla çalışıyorsunuz? Projeyi en son kullandığım zaman yerel ağ çalışması için bir arka uçtaydım. O zamandan beri hackage ve bir ya da iki tane daha popüler bir peer to peer versiyonu gördüm. – Davorak

+0

Backend paketindeki gibi mi? network-transport-tcp-0.3.1 – HHC

cevap

0

Toplum wiki cevap:

Bir NAT (örneğin bir genişbant yönlendirici gibi) cihaz ve söz konusu adresi değildir bilgisayarınıza, cihaza ait arkasındayız. Bağlayamazsın.

ifconfig komutu (Windows ipconfig) deneyin. Yerel ağınızda bir adres veya çeşitli ağlarda (örneğin kablolu ve kablosuz) birkaç adres alacaksınız. Bir geniş bant yönlendiriciye bağlı tipik bir ev ağınız varsa, bu adresler ev ağınızdan (ağlarınızdan) görülebilir, ancak İnternet'ten görünmeyecektir. Sunucunuzu dışarıdan erişilebilir kılmak için yönlendiricinizde bir "delik" yapılandırmanız gerekir. Bu tüm temel ağ şeyleri, "bulutlu" bir şey yapmak istiyorsanız onu öğrenmek zorundasınız.