网络编程

Node提供了net、dgram、http、https这4个模块,分别用于处理TCP、UDP、HTTP、HTTPS,适用于服务器端和客户端

一、TCP Server

net模块通过net.createServer方法创建TCP服务器,通过net.connect方法创建客户端去连接服务器。

  • TCP
  1. TCP传输控制协议,在OSI模型中属于传输层协议
  2. TCP面向连接的协议,需要3次握手形成会话
  3. net模块实现
  • 创建TCP服务器端
// server.js
var net = require('net');

// 创建TCP服务器
var server = net.createServer(function(socket){

 // 监听客户端的数据
    socket.on('data', function(data) {
        console.log('server got data from client: ', data.toString());
    });
 // 监听客户端断开连接事件
    socket.on('end', function(data) {
        console.log('connection closed');
    });
    // 发送数据给客户端
    socket.write('Hello\r\n');
	
})
// 启动服务
server.listen(8080, function() {
    console.log('server bound');
});

二、UDP Server

  1. UDP又称用户数据包协议,与TCP一样属于传输层。
  2. TCP一旦连接建立,所有的会话都基本连接完成,客户端如果要与另一个TCP服务通信,需要另建立一个套接字来完成连接
  3. UDP中,一个套接字可以与多个UDP服务通信
创建UDP套接字
  • UDP套接字事件message 、istening 、close、 error
// 既可以作为客户端发送数据,也可以作为服务器端接收数据

var dgram = require("dgram");
var socket= dgram.createSocket("udp4");
创建UDP服务器端
var dgram = require("dgram");
var socket= dgram.createSocket("udp4");

// 接收来自客户端的消息
server.on("message", function(msg, rinfo) {
    console.log("server got: " + msg.toString() + " from " + rinfo.address + ":" + rinfo.port);
});
// 监听服务
server.on("listening", function() {
    var address = server.address();
    console.log("server listening on " + address.address + ":" + address.port);
});

server.bind(41234);
创建UDP客户端
// udpClient.js

var dgram = require('dgram');

var client = dgram.createSocket('udp4');
var message = new Buffer('hello shiyanlou');

client.send(message, 0, message.length, 41234, 'localhost', function(err, bytes) {
    client.close();
});

三、HTTP Server

HTTP是超文本传输协议,构建在TCP之上,属于应用层协议

  • http报文
  1. 第一部分为TCP三次握手过程
  2. 第二部分是完成握手之后,客户端向服务器端发送请求报文
  3. 第三部分是服务器完成处理后,向客户端发送响应内容(包括响应头、响应体)
  4. 结束会话信息
  • http模块
    Node的http模块包含对HTTP处理的封装
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值