2012-02-08 15 views
18

में TCP सॉकेट से डिस्कनेक्ट करने के लिए मैं इस आदेश का उपयोग NodeJS में सर्वर सॉकेट से कनेक्ट:कैसे NodeJS

client = net.createConnection() 

कैसे मैं तो ठीक से सर्वर से डिस्कनेक्ट कर सकते हैं?

मैं client.end() और यहां तक ​​कि client.destroy()

की कोशिश की लेकिन जब मैं netstat का उपयोग कर कनेक्शन की स्थिति की जांच यह पता चलता है कि कनेक्शन राज्य FIN_WAIT2 में है।

मैं कनेक्शन को पूरी तरह बंद और नष्ट कैसे कर सकता हूं?

+0

क्या आपने 'client.close()' की कोशिश की है? – fent

+2

कोई क्लाइंट नहीं है। क्लोज़ विधि – mgamer

उत्तर

15

net.createConnection() सॉकेट ऑब्जेक्ट देता है। client.destroy() वह है जो आप करना चाहते हैं।

स्रोत: http://nodejs.org/docs/latest/api/net.html#socket.destroy

+4

अंत और नष्ट करने के बीच क्या अंतर है? नष्ट होने के बाद मैं नेटस्टैट में राज्य FIN_WAIT2 भी देखता हूं। – mgamer

+2

@mgamer 'end()' 'केवल सॉकेट की लेखन स्ट्रीम को बंद कर देता है, रिमोट होस्ट अपनी लेखन स्ट्रीम को खोल सकता है और आपको डेटा भेज सकता है – bara

+1

अल्थ्रू दस्तावेज़ कहते हैं," त्रुटियों के मामले में केवल आवश्यक "ऐसा लगता है कि यह एकमात्र तरीका है एक कनेक्शन बंद करो। मेरे लिए मैं 'socket.close = function (data) \t \t { \t \t \t var self = this; \t \t \t अगर (डेटा) \t \t \t \t this.write (डेटा, function() {Self.destroy();}); \t \t बाकी \t \t \t \t \t this.destroy(); \t \t}; ' – Fr0sT

0

क्या आप चाहते हैं client.close है(), ग्राहक भविष्य कनेक्शन के लिए तो जिंदा रहता है। यदि आप निकट भविष्य में कनेक्शन का उपयोग नहीं करना चाहते हैं तो आप इसे नष्ट कर सकते हैं()। मुझे अपनी विनम्र राय में कहना होगा कि अर्थशास्त्र नेट नेट सॉकेट में संगत नहीं है। आप एक सॉकेट कनेक्ट() और विपरीत है()। खुला() एक सॉकेट अधिक appropiate होगा। क्लाइंट-एंड() सर्वर पर एक फिन पैकेट भेजता है