首页 > Web开发 > 详细

nodejs 创建tcp/udp服务器和客户端

时间:2020-06-13 09:58:21      阅读:45      评论:0      收藏:0      [点我收藏+]

TCP

server

// https://nodejs.org/api/net.html

const net = require("net");

// https://nodejs.org/api/net.html#net_net_createserver_options_connectionlistener
// https://nodejs.org/api/net.html#net_class_net_socket
const server = net.createServer((c /*net.Socket*/) => {
  console.log("client connected");

  c.setEncoding("utf-8");
  c.on("data", (data) => {
    // 处理发送的数据,telnet连接后,会把键盘的输入事件发送过来
    console.log(data);
    c.write("hello\r\n");
  });
  c.on("end", () => {
    console.log("client disconnected");
  });

  // https://stackoverflow.com/questions/36314892/when-should-i-use-socket-pipe-on-nodejs-net-socket
  // tcp 是双向的,pipe会把发送来的信息原封不动的返回去
  // c.pipe(c);
});
server.on("error", (err) => {
  console.log(err.message);
});
server.listen(5000, () => {
  console.log("server bound");
  console.log(server.address());
});

// 测试
// telnet localhost 5000

client

const net = require("net");

// https://nodejs.org/api/net.html#net_net_createconnection_options_connectlistener
const client = net.createConnection({ port: 5000 }, () => {
  console.log("connected to server!");
  client.write("i‘m tcp client. \r\n");
});
client.on("data", (data) => {
  console.log(data.toString());
  client.end();
});
client.on("end", () => {
  console.log("disconnected from server");
});

tcp流:
技术分享图片

UDP

server

// https://nodejs.org/api/dgram.html

const dgram = require("dgram");
const server = dgram.createSocket("udp4");

server.on("error", (err) => {
  console.log(`server error:\n${err.stack}`);
  server.close();
});

const message = Buffer.from(`hi\n`);
server.on("message", (data, rinfo) => {
  console.log(data.toString());
  console.log(rinfo);
  server.send(message, rinfo.port, rinfo.address, (err) => {
    if(err) console.log(err);
  });
});

server.on("listening", () => {
  console.log(`server listening`);
  console.log(server.address());
});

server.bind(5000);

client

const dgram = require("dgram");
const message = Buffer.from(`i‘m udp client.`);
const client = dgram.createSocket("udp4");

client.on("error", (err) => {
  console.log(err);
});

client.on("message", (data, rinfo) => {
  console.log(data.toString());
});

client.send(message, 5000, "localhost", (err) => {
  // client.close();
});

udp流:
技术分享图片

nodejs 创建tcp/udp服务器和客户端

原文:https://www.cnblogs.com/ajanuw/p/13111514.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!