node.js与vc++程序之间的TCP通信遇到的问题
发布于 3年前 作者 andy24boyking 1806 次浏览

一个很简单的测试例子。在vc++里初始化套接字简历连接后,用send函数发了两个int型数据。

int Width=1000, Height=500;

send(dataSock, (char *)&Width, sizeof(Width)+1, MSG_OOB);
printf("send: %d\n", Width);
send(dataSock, (char *)&Height, sizeof(Height)+1, MSG_OOB);
printf("send: %d\n", Height);

在node.js中接收如下:

client.on('data', function(data) {
var width = data.readInt32LE(0);
console.log("rcv:"+width);});
client.on('data', function(data) {
var height = data.readInt32LE(0);
console.log("rcv:"+height);
client.destroy();});

结果接收到的两次数据均为1000。没有找到原因。。向各位求助!

4 回复

加上 TCP_NODELAY 试试看

可能是没有进行网络字节序转换

data 是个事件。。。callback是监听,事件发生一次执行一次callback。 我的理解是打印了两次是因为你添加了两个监听,所以应该是你写的有问题。 试试:

client.on('data', function(data) {
  var width = data.readInt32LE(0);
  console.log("rcv:"+width);
  var height = data.readInt32LE(0);
  console.log("rcv:"+height);
});

不知道应该是data还是end事件。。

第二个readInt32LE改成1…

回到顶部