尝试在Node v0.10.15中编写TCP客户端,我在从服务器获取数据时遇到一些麻烦。我知道服务器工作正常,因为我有3-4种用不同语言编写的不同客户端与之通信。
下面是一段更大的代码片段,但这应该是重点。 问题是:我希望在写入套接字后返回2个数据包(此部分未包含在此示例中)。我只看到了"数据"事件被解雇一次。为了让节点从Tcp流中恢复读取,我需要做些什么吗?我可以确认服务器正在发送2个数据包(长度然后是实际数据)任何帮助都将不胜感激。
var dc = require('./DataContracts.js');
var net = require('net');
require('buffertools').extend();
var client = net.Socket();
var isConnected = false;
var serverHost = '10.2.2.21';
var dataCallback;
var receivedBuffer = new Array();
function InitComm(buffer) {
if (!isConnected) {
client.connect(4987, serverHost, function() {
client.on('data', function(data) {
console.log('Received server packet...');
var buf = new Buffer(data);
receivedBuffer.push(buf);
client.resume();
});
client.on('end', function() {
if (receivedBuffer.length > 1) {
if (dataCallback !== undefined)
dataCallback(receivedBuffer);
}
});
client.on('close', function() {
//clean up
});
client.on('error', function(err) {
console.log('Error!: ' + err);
});
Communicate(buffer);
});
} else {
Communicate(buffer);
}
}
答案 0 :(得分:0)
原来,该节点正在将两个数据包组合在一起。我必须错过第一个数据包的回车