基于TCP和UDP的数据通信

Nodejs提供了net模块和dgram实现TCP和UDP数据通信

1.创建TCP服务器

2.监听客户端连接的socket端口对象

3.向客户端发送数据

4.UDP客户端和服务器通信

5.UDP服务器向客户端组播数据

1.net模块基于TCP的数据通信 1)创建TCP服务器 var server=net.createServer([options],[connectionListener])

```
var net=require('net');
var server=net.createServer(function (socket) {
    console.log('客户端与服务器连接建立');
});
server.listen(8431,'localhost',function () {
     console.log('服务器开始监听');
});
```
复制代码

2)返回监听地址的

```
var net=require('net');
    var server=net.createServer(function (socket) {
console.log('客户端与服务器连接建立');
});
server.listen(8431,'localhost',function () {
     address=server.address();
    console.log('被监听的端口地址是%j',address);
复制代码

});

2.创建TCP客户端 1)var net=new net.Socket([option])

3.TCP客户端和服务器之间发送数据

TCPServer.js
复制代码
  var net=require('net');
  var server=net.createServer();
  server.on('connection',function (socket) {
  console.log('客户端与服务器连接已经建立');
  socket.setEncoding('utf-8');
  socket.on('data',function (data) {
      console.log('已经接收到客户端发送的数据'+data);
      socket.write('确认数据:'+data);
  });
});
server.listen(8432,'localhost');
复制代码

TCPSocket.js

var net=require('net');
var client=new net.Socket();
client.setEncoding('utf-8');
client.connect(8432,'localhost',function () {
    console.log('已连接到服务器');
    client.write('你好');
});
client.on('data',function (data) {
    console.log('已连接到服务器端发送的数据:'+data);
});
复制代码

4.net模块中的类和方法 1)isIP 2)isIPv4 3)isIpv6

TCP是一种抑郁连接的协议,,在进行通信的钱,客户端和服务器要建立通信连接,UDP是面向非连接的协议

1.创建UDP服务器

var dgram=require("dgram");
var server=dgram.createSocket("udp4");
server.on("message",function (msg, rinfo) {
    console.log('已接收客户端发送的数据:'+msg);
    console.log('客户端的地址信息为%j',rinfo);
    var buf=new Buffer("确认信息:"+msg);
    server.send(buf,0,buf.length,rinfo.port,rinfo.address);
});
server.on("listening",function () {
    var address=server.address();
    console.log("服务器开始监听,地址信息为%j",address);
});
server.bind(41234,'localhost');
复制代码

2.创建UDP客户端

var dgram=require('dgram');
var message=new Buffer("您好.");
var client=dgram.createSocket("udp4");
client.send(message,0,message.length,41234,"localhost",function (err,bytes) {
    if(err)
        console.log('发送数据失败.');
    else
        console.log("已发送%d字节数据",bytes);
});
client.on("message",function (msg,rinfo) {
    console.log("已接收服务器发送的数据%s",msg);
    console.log("服务器地址为%s",rinfo.address);
    console.log("服务器所用端口为%s",rinfo.port);
});
复制代码

转载于:https://juejin.im/post/5b36f71ee51d455e2b5ac4d7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值