2013-04-18 8 views
5

मैं वर्तमान में Cloud-Haskell tutorial का अनुसरण कर रहा हूं और createTransport पर अटक गया है। ऐसा लगता है कि मैं केवल सर्वर के लिए 127.0.0.1 पर एक परिवहन खोलने में सक्षम हूं और सर्वर से कनेक्ट करने के लिए क्लाइंट के लिए एक परिवहन नहीं खोल सकता। मैंने अपना आईपी पता प्राप्त करने के लिए curl ifconfig.me का उपयोग करके दो मशीनों का उपयोग करने का प्रयास किया है, हालांकि, createTransport मेरे लिए एक परिवहन नहीं बनाएगा। कोई विचार?createTransport का उपयोग कैसे करें?

संपादित करें: स्थानीय रूप से अब काम कर रहा है।

मेरे कार्यक्रम, ट्यूटोरियल के रूप में ठीक उसी है दो मशीनों के बीच कनेक्ट करने का प्रयास:

curl ifconfig.me रिटर्न सर्वर के लिए 101.119.27.24

आदेश लाइन:

ServerClientServer 101.119.27.24 9000 

त्रुटि दिखाई:

bind: unsupported operation (Cannot assign rerquested address) 

संपादित करें: सर्वर कोड के रूप में आता है:

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 और onCtrlC कार्यों अन्य मॉड्यूल में परिभाषित कर रहे हैं।

मैं

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

में Right transport <- createTransport host port बदल इतना है कि मैं देख सकता हूँ क्या त्रुटि संदेश है।

+0

क्या आप हमें कुछ कोड प्रदान कर सकते हैं जो अपेक्षित काम करने में विफल रहा है? 'CreateTransport iNADDR_ANY" 3000 "डिफ़ॉल्ट टीसीपी पैरामीटर 'के बारे में कैसे? –

+0

आप किस बैकएंड के साथ काम कर रहे हैं? आखिरी बार मैंने परियोजना का इस्तेमाल स्थानीय नेट काम के लिए एक पिछला अंत था। तब से मैंने सहकर्मी संस्करण को सहकर्मी और एक या दो अन्य लोगों के लिए एक सहकर्मी देखा है। – Davorak

+0

पैकेज में बैकएंड? नेटवर्क-ट्रांसपोर्ट-टीसीपी-0.3.1 – HHC

उत्तर

0

समुदाय-विकी जवाब टिप्पणी के आधार पर:

आप एक NAT उपकरण (जैसे एक ब्रॉडबैंड रूटर के रूप में) और प्रश्न में पता डिवाइस के अंतर्गत आता है, आपके कंप्यूटर के लिए नहीं के पीछे हैं। आप इसे बांध नहीं सकते हैं।

ifconfig कमांड (ipconfig विंडोज पर) का प्रयास करें। आपको अपने स्थानीय नेटवर्क, या कई नेटवर्क पर कई पते मिलेगा (जैसे वायर्ड और वायरलेस)। यदि आपके पास ब्रॉडबैंड राउटर से जुड़ा एक ठेठ होम नेटवर्क है, तो ये पते आपके घर नेटवर्क से दिखाई देंगे लेकिन इंटरनेट से नहीं। अपने सर्वर को बाहर से सुलभ बनाने के लिए आपको अपने राउटर में "छेद" कॉन्फ़िगर करने की आवश्यकता है। यह सभी बुनियादी नेटवर्किंग सामान है, यदि आप कुछ भी "बादल" करना चाहते हैं तो आपको इसे सीखना होगा।

संबंधित मुद्दे