在Node.js上运行时更改UDP服务器侦听端口的最有效方法是什么?
我的网络应用程序有一个默认端口41234
,但我希望最终用户能够通过设置文本框更改此设置,该文本框会调用updatePort()
。
使用以下代码,新的(既不是旧的)端口实际上并不是在监听数据报,因为我无法收到任何内容。
var SRV_PORT = 41234;
var server = dgram.createSocket("udp4");
server.on("error", function (err) {
print("server error:\n" + err.stack);
server.close();
});
server.on("message", function (msg, rinfo) {
//code for incoming datagram analysis here
});
server.on("listening", function () {
var address = server.address();
print("server listening " + address.address + ":" + address.port);
});
//start the UDP server with the default SRV_PORT
server.bind(SRV_PORT);
function updatePort(newPort) {
server.close();
server = dgram.createSocket("udp4");
server.bind(newPort);
}
答案 0 :(得分:1)
更新端口后不会收到任何消息的原因是因为您已经为服务器分配了一个新的套接字实例,并且不再连接任何事件处理程序。