我现在正在尝试从node.js(服务器)连续发送字节到Android(客户端)。让我展示代码示例。
var net = require('net');
var server = net.createServer(function(c){
c.on('data', function(data){
if(data == 'foo'){
for(var i = 1; i <= 255; i++){
var byteData = makeBytedata();
c.write(byteData);
wait(100)
}
}
});
});
此代码无法正常工作,因为它有时会将byteData与一个数据包组合在一起。有没有人有解决方案分别发送字节?
答案 0 :(得分:0)
net.createServer
创建TCP
服务器, TCP不会单独发送消息。 TCP是 stream 协议,这意味着当您向套接字写入字节时,您在接收端以相同的顺序获得相同的字节。
一种解决方法:为您的消息定义一种格式,以便您的客户端可以确定套接字流中消息的开头和结尾。例如,您可以使用\n
标记邮件的结尾。
for(var i = 1; i <= 255; i++){
var byteData = makeBytedata();
c.write(byteData + '\n');
}
然后客户可以通过\n
分隔它们。
另一种方法是使用UDP/Dgram
var dgram = require("dgram"),
server = dgram.createSocket('udp4');
server.on("message", function(msg, rinfo) {
// send message to client
});