작은 핑 스크립트를 만들고 싶습니다. 나는 노드 js의 초보자이다. 나의 궁극적 인 작은 목표는 클라이언트가 서버에 핑 (ping)하도록하는 것입니다. 서버가 콘솔에 메시지를 로깅하여 패킷을 확인하고 클라이언트로 동일한 패킷/메시지를 다시 보내길 원합니다.노드 JS : 핑 서버 및 클라이언트 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 :
감사합니다! 정말 도움이되었습니다. 하지만 다른 질문이 있습니다. 패킷을 특정 바이트 수로 보내려고한다고 가정 해 봅시다. 1kb의 경우 'message.length'를 1000으로 바꿉니다. 하지만 오류가 발생합니다 ('Offset + 버퍼 길이를 초과하는 길이'); '
나는 이유를 잘 이해하지 못합니다.
감사 :
다음은 예입니다! 정말 도움이되었습니다. 하지만 다른 질문이 있습니다. 패킷을 특정 바이트 수로 보내려고한다고 가정 해 봅시다. 1kb의 경우 'message.length'를 1000으로 바꿉니다. 하지만 오류가 발생합니다 ('Offset + 버퍼 길이를 초과하는 길이'); ' 나는 왜 그런지 잘 모른다. –
버퍼의 길이가 18 바이트이기 때문에 ("My KungFu is Good!"길이, 기본 코덱은 문자 당 ascii/2 진수 바이트입니다). 'var message = new Buffer (1000); '로 1000 바이트를 보내라. –