6
我想创建一个小的ping脚本。我是节点js的初学者。我最终的小目标是让客户端ping服务器。我希望服务器通过在控制台中记录消息来确认数据包,并且我希望它将相同的数据包/消息发送回客户端。节点JS:Ping服务器和客户端UDP
这是我到目前为止有:
服务器:
var PORT = 33333;
var HOST = '127.0.0.1';
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on('listening', function() {
var address = server.address();
console.log('UDP Server listening on ' + address.address + ":" + address.port);
});
server.on('message', function (message, remote) {
console.log(remote.address + ':' + remote.port +' - ' + message);
// I added a server.send but it gave me an infinite loop in the server console
});
server.bind(PORT, HOST);
客户:
var PORT = 33333;
var HOST = '127.0.0.1';
var dgram = require('dgram');
var message = new Buffer('My KungFu is Good!');
var client = dgram.createSocket('udp4');
client.on('message', function (message, remote) {
console.log("The packet came back");
});
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {
if (err) throw err;
console.log('UDP message sent to ' + HOST +':'+ PORT);
count++;
});
UPDATE:
谢谢!这真的有帮助。 但我有另一个问题。 假设我想以特定数量的字节发送数据包。 我会用1000替换'message.length'1kb权利? 但我得到一个错误'抛出新的错误('偏移+长度超出缓冲区长度');'
我不太明白为什么。
谢谢!这真的有帮助。 但我有另一个问题。 假设我想以特定数量的字节发送数据包。 我会用1000替换'message.length'1kb权利? 但我得到一个错误'抛出新的错误('偏移+长度超出缓冲区长度');' 我不太明白为什么。 –
,因为你的缓冲区长度是18字节(“我的功夫很好!”长度,默认编解码器是每个字符为ASCII /二进制字节)。用'var message = new Buffer(1000)'创建你的消息;'发送1000字节 –