2012-02-17 15 views
6

Tôi đang gặp một số sự cố khi viết 2 thông báo tới một socket TCP bằng gói net của node.js.Chức năng TCP socket.write trong gói "net" của node.js không ghi vào socket

Mã:

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'); 
}); 

Tôi cũng đã thử các net.createConnection được cho là chính xác hơn (arguments ...) chức năng từ gói net không có may mắn.

Tôi có thể thấy ở phía máy chủ của tôi rằng kết nối với ổ cắm xảy ra đúng như mong đợi nhưng không có dữ liệu nào nhận được bởi máy chủ. Đó là lý do tại sao tôi nghi ngờ có điều gì đó không ổn .write. Có lẽ các nhân vật dây đầu tiên đang gây nhầm lẫn?

Mọi trợ giúp sẽ được đánh giá cao.

Rất cám ơn.

+0

Tôi đã thử mã của bạn, sử dụng 'nc -l 5555' làm máy chủ của tôi và có vẻ như hoạt động tốt theo Nút 0.6.10. –

+0

Cảm ơn bạn rất nhiều vì đã cố gắng! Vấn đề là tôi có thể làm cho nó hoạt động (bằng cách sử dụng Node 0.5.11-pre) với nc, hoặc với một máy chủ node.js mà tôi đã tự viết ... máy chủ riêng của nó (được viết bằng java) mà tôi không thể kết nối với. Tôi có thể sử dụng telnet để kết nối và gửi tin nhắn/dữ liệu hoàn toàn tốt đẹp, nhưng không phải khi sử dụng Socket.write(). Như tôi nói khi tôi làm một đuôi trên máy chủ đăng nhập tập tin tôi có thể thấy rõ ràng tôi đang kết nối, nhưng bất cứ điều gì tôi cố gắng để viết vào ổ cắm tcp (với mã trên) nó chỉ không hiển thị. Cảm ơn bạn đã trả lời của bạn, tôi đánh giá cao nó. – RSwan

+0

Trong trường hợp đó, tôi đoán bạn không định dạng đúng dữ liệu của mình. Bạn có thể muốn thử gửi ngắt dòng, ví dụ (telnet sẽ làm điều này). Hãy thử 'socket.write ('@!> \ N');'. –

Trả lời

13

Nó phụ thuộc vào những gì máy chủ bạn đang nói chuyện với, rõ ràng, nhưng có lẽ bạn nên phân định dữ liệu của bạn với dòng mới \n:

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

Đối với một số máy chủ, bạn có thể cần \r\n.

Các vấn đề liên quan