gpt4 book ai didi

javascript - Node JS : Ping Server & Client UDP

转载 作者:数据小太阳 更新时间:2023-10-29 05:10:40 28 4
gpt4 key购买 nike

我想创建一个小的 ping 脚本。我是 Node js 的初学者。我最终的小目标是让客户端 ping 服务器。我希望服务器通过在控制台中记录消息来确认数据包,并且我希望它向客户端发回相同的数据包/消息。

这是我目前所拥有的:

服务器:

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++;
});

更新:

谢谢!这真的很有帮助。但我还有一个问题。假设我想以特定字节数发送数据包。对于 1kb,我会将“message.length”替换为 1000,对吗?但是我得到一个错误 'throw new Error('Offset + length beyond buffer length');'

我不太明白为什么。

最佳答案

一件事是发送数据,另一件事是接收数据。由于UDP协议(protocol)是双向的,那么实际上客户端和服务器之间并没有严格的区别。所以你的服务器和客户端代码将几乎相同,区别在于实际上一个会发送数据包而另一个只会响应。另请注意,您有一个无限循环,因为您可能将 .sendPORTHOST 变量一起使用,并且您必须发送到不同的主机/端口对。

这是一个例子:

服务器

var host = "127.0.0.1", port = 33333;

var dgram = require( "dgram" );

var server = dgram.createSocket( "udp4" );

server.on( "message", function( msg, rinfo ) {
console.log( rinfo.address + ':' + rinfo.port + ' - ' + msg );
server.send( msg, 0, msg.length, rinfo.port, rinfo.address ); // added missing bracket
});
server.bind( port, host );

客户端

// NOTE: the port is different
var host = "127.0.0.1", port = 33334;

var dgram = require( "dgram" );

var client = dgram.createSocket( "udp4" );

client.on( "message", function( msg, rinfo ) {
console.log( "The packet came back" );
});

// client listens on a port as well in order to receive ping
client.bind( port, host );

// proper message sending
// NOTE: the host/port pair points at server
var message = new Buffer( "My KungFu is Good!" );
client.send(message, 0, message.length, 33333, "127.0.0.1" );

关于javascript - Node JS : Ping Server & Client UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350640/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com