2012-02-17 7 views
6

पर नहीं लिख रहा है मुझे node.js' net package का उपयोग कर एक टीसीपी सॉकेट में 2 संदेश लिखने में कुछ परेशानी हो रही है।node.js 'net "पैकेज में टीसीपी सॉकेट.write फ़ंक्शन सॉकेट

कोड:

var net = require('net'); 


var HOST = '20.100.2.62'; 
var PORT = '5555'; 

var socket = new net.Socket(); 

socket.connect (PORT, HOST, function() { 
console.log('CONNECTED TO: ' + HOST + ':' + PORT); 
// Write a message to the socket as soon as the client is connected, the server will receive it as message from the client 
    socket.write('@!>');  
    socket.write('RIG,test,test,3.1'); 

}); 



// Add a 'data' event handler for the client socket 
// data is what the server sent to this socket 
socket.on('data', function(data) { 
    console.log('DATA: ' + data); 
    // Close the client socket completely 
    // client.destroy(); 
}); 

socket.on('error', function(exception){ 
    console.log('Exception:'); 
    console.log(exception); 
}); 


socket.on('drain', function() { 
    console.log("drain!"); 
}); 

socket.on('timeout', function() { 
    console.log("timeout!"); 
}); 

// Add a 'close' event handler for the client socket 
socket.on('close', function() { 
    console.log('Connection closed'); 
}); 

मैं भी कोई भाग्य के साथ माना जाता है कि अधिक सही net.createConnection (तर्क ...) शुद्ध पैकेज से समारोह की कोशिश की है।

मैं अपने सर्वर पक्ष पर देख सकता हूं कि सॉकेट से कनेक्शन की अपेक्षा की जाती है लेकिन सर्वर द्वारा कोई डेटा प्राप्त नहीं होता है, इसलिए मुझे संदेह है कि सॉकेट का उपयोग करने के तरीके में कुछ गलत है लिखना समारोह। शायद पहले तारों के पात्र भ्रम पैदा कर रहे हैं?

किसी भी मदद की सराहना की जाएगी।

बहुत धन्यवाद।

+0

मैंने अपने सर्वर के रूप में 'एनसी-एल 5555' का उपयोग करके अपने कोड की कोशिश की, और ऐसा लगता है कि यह नोड 0.6.10 के तहत ठीक काम करता है। –

+0

कोशिश करने के लिए बहुत बहुत धन्यवाद! समस्या यह है कि मैं इसे एनसी के साथ काम करने के लिए (नोड 0.5.11-पूर्व का उपयोग कर) प्राप्त कर सकता हूं, या एक node.js सर्वर के साथ जो मैंने खुद लिखा था ... यह सिर्फ यह विशेष सर्वर (जो जावा में लिखा गया था) कि मैं नहीं कर सकता जुड़े। मैं टेलनेट का उपयोग संदेश/डेटा को पूरी तरह से ठीक करने और भेजने के लिए कर सकता हूं, लेकिन सॉकेट.write() का उपयोग करते समय नहीं। जैसा कि मैंने कहा है कि जब मैं सर्वर लॉग फ़ाइल पर पूंछ करता हूं तो मैं स्पष्ट रूप से देख सकता हूं कि मैं जुड़ा हूं, लेकिन जो भी मैं टीसीपी सॉकेट (उपरोक्त कोड के साथ) लिखने की कोशिश करता हूं, यह सिर्फ दिखाई नहीं दे रहा है। आपके उत्तर के लिए धन्यवाद, मैं इसकी सराहना करता हूं। – RSwan

+0

उस स्थिति में, मुझे लगता है कि आप अपने डेटा को सही तरीके से स्वरूपित नहीं कर रहे हैं। आप लाइन-ब्रेक भेजने की कोशिश कर सकते हैं, उदाहरण के लिए (टेलनेट यह करेगा)। 'Socket.write ('@!> \ N') आज़माएं;'। –

उत्तर

13

यह क्या जिस सर्वर से आप बात कर रहे हैं, जाहिर है पर निर्भर करता है, लेकिन आप शायद नई-पंक्तियों \n के साथ अपने डेटा को परिसीमित करना चाहिए:

socket.write('@!>\n');  
socket.write('RIG,test,test,3.1\n'); 

कुछ सर्वर के लिए, आप \r\n आवश्यकता हो सकती है।

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

  • कोई संबंधित समस्या नहीं^_^