我对Udp套接字编程非常陌生,在这里我实现了连接到UDP服务器的echo UDP Client
var buffer = require('buffer');
var udp = require('dgram');
// creating a client socket
var client = udp.createSocket('udp4');
//buffer msg
var data = Buffer.from('Pradip Shinde');
client.on('message',function(msg,info){
console.log('Data received from server : ' + msg.toString());
console.log('Received %d bytes from %s:%d\n',msg.length, info.address, info.port);
});
//sending msg
client.send(data,9300,'192.168.1.187',function(error){
if(error){
client.close();
}else{
console.log('Data sent from client!!!');
}
});
当此客户端向服务器发送味精时,操作系统将随机端口分配给此客户端,但是在我的情况下,我希望静态端口永远不会改变,是否可以将静态端口分配给udp客户端?
答案 0 :(得分:1)
如文档中所述,您可以使用bind
方法来做到这一点,
对于UDP套接字,使dgram.Socket侦听作为作为第一个参数传递的options对象的属性传递的命名端口和可选地址上的数据报消息。如果未指定端口或端口为0,则操作系统将尝试绑定到随机端口。如果未指定address,则操作系统将尝试侦听所有地址。绑定完成后,将发出“监听”事件并调用可选的回调函数。
尝试使用
// Creating a client socket
var client = udp.createSocket('udp4');
// Bind your port here
client.bind({
address: 'localhost',
port: 8000,
exclusive: true
});
有关更多信息,请遵循此documentation。