我想使用Nodejs實現簡單的客戶端 - 服務器連接。 但我遇到以下問題。Nodejs streaming
考慮代碼
server.js:
var net = require('net'),
sys = require('sys');
net.createServer(onConnection).listen(8124);
function onConnection(socket) {
socket.setNoDelay(true);
socket.addListener("connect", function() {
sys.puts('client connected: ' + this.remoteAddress);
});
socket.addListener("data", function (data) {
sys.puts("message: \n" + data + "\n - end of msg.");
});
socket.addListener("end", function() {
sys.puts('end of connection');
this.end();
});
}
sys.puts('Server running at 127.0.0.1:8124');
client.js:
var net = require('net'),
sys = require('sys');
var stream = net.createConnection(8124);
stream.addListener("connect", function(){
sys.puts('connected');
stream.write('a');
stream.flush();
stream.write('b');
stream.flush();
});
stream.addListener("data", function(data){
sys.puts("Message: \n" + data + "\n - end of msg.");
});
當我運行client.js我有時會只有一個消息 'AB',而不是兩個消息'a'和'b'。
有沒有一些「正確的方法」來解決這個問題?
你甚至可能會收到'ba'!!沒有受讓人按照您發送的順序接收數據。 – 2011-07-25 10:43:19
@MortezaM。實際上TCP/IP *保證*數據將按照它發送的順序被接收,所以在這種情況下,它將始終是'ab'。 – Kornel 2013-06-17 21:38:55