HL/Team Fortress 2 서버에서 점수를받는 javascript/node.js 프로그램을 작성하고 있지만, 보내지는 UDP 패킷을받을 수 없습니다. 게임 서버. UDP 테스트 도구에서 전송 된 UDP 패킷을 수신 할 수 있습니다. 작동하는 파이썬 라이브러리를 발견했지만 서버에서 데이터를 받기 전에 socket.connect()를 사용합니다. (asyncore 사용)Node.js의 udp 소켓에 연결
파이썬 snipplet :
self.create_socket(socket.AF_INET, socket.SOCK_DGRAM)
self.bind(('0.0.0.0', 17015))
self.connect((IP of server, 27015))
data = self.recv(1400)
하지만 Node.js를 내가 원격 주소에 연결 수없는 것. 지금까지
내 코드 :
var dgram = require('dgram')
var server = dgram.createSocket("udp4");
server.on('message', function (data, rinfo) {
data = data.toString();
if (data.startsWith('\xff\xff\xff\xff') && data.endsWith('\n\x00')) {
console.log(data);
Logparser(data);
} else {
console.log(data);
}
});
server.bind(17015);
와이어 샤크로 촬영 한 UDP 패킷 당신은 서버에 연결하지 않는 UDP의 멀티 캐스트 그룹에 가입하기 위해 addMembership()
방법을 사용할 필요가 http://pastebin.com/W7i9CV2u
임 내가 오류 addMembership ('127.0.0.1')를 사용하는 경우 오류가 점점 : Node.js를 : 201 던져 전자; // 첫 번째 눈금에서 'error'이벤트 또는 process.nextTick 오류가 발생했습니다. ^ Error : getaddrinfo ENOENT at errnoException (dns.js : 31 : 11) at Object.onanswer [dcomplete as dns.js : 140 : 16) – Yannick
Google 검색에서 node.js가 주소를 찾을 수 없을 때 ENOENT 오류 코드가 발생하는 것 같습니다. 멀티 캐스트 주소는 IP 주소가 아님을 이해해야합니다. 위키 피 디아에 따르면 유효한 멀티 캐스트 주소는 224.0.0.0에서 239.255.255.255까지이므로 127.0.0.1은 유효하지 않으므로 오류가 발생합니다. http://en.wikipedia.org/wiki/Multicast_address#IPv4 – Robadob
여기에 멀티 캐스트 UDP가 포함되어있는 것처럼 보입니다. UDP의 다른 용도가 있습니다. – EJP