本文将要写一个udp服务器,和一个udp客户端,并实现客户端发送文件给服务器。
服务器端
代码如下:var dgram = require("dgram");
server();
function server(){
var socket = dgram.createSocket("udp4");
socket.on("message",function(msg,rinfo){
process.stdout.write(msg.toString());
});
socket.on("listening",function(){
console.log("server ready:",socket.address());
});
socket.bind(8000);
}
代码解读:
1、dgram是nodejs的内置模块,提供了 UDP 数据包 socket 的实现。
2、server()函数提供了监听和消息响应方法,当接收到数据时,会进行输出显示。
客户端
代码如下:var dgram = require("dgram");
var fs = require("fs");
client();
function client(){
//通过流读取文件内容
var inStream = fs.createReadStream("./file.txt");
inStream.on("readable",function(){
send();
});
function send(){
var message = inStream.read(16);
var socket = dgram.createSocket("udp4");
//没有内容了?关闭连接
if(!message){
return socket.unref();
}
//连接本地8000端口
socket.send(message,0,message.length,8000,"127.0.0.1",function(err,bytes){
send();
});
}
}
代码解读:
1、客户端完成两项工作:读取文件file.txt、向服务器发送;
2、读取是通过流进行的,读取后即进行发送,当读取完成时,关闭socket。
file.txt文件内容如下:jshaman.com is a web,used for obfuscate js file.
执行效果如下: