Node提供了net、dgram、http、https这4个模块,分别用于处理TCP、UDP、HTTP、HTTPS,适用于服务器端和客户端
一、TCP Server
net模块通过net.createServer方法创建TCP服务器,通过net.connect方法创建客户端去连接服务器。
- TCP
- TCP传输控制协议,在OSI模型中属于传输层协议
- TCP
面向连接
的协议,需要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
- UDP又称
用户数据包协议
,与TCP一样属于传输层。 - TCP一旦连接建立,所有的会话都基本连接完成,客户端如果要与另一个TCP服务通信,需要另建立一个套接字来完成连接
- 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报文
- 第一部分为TCP三次握手过程
- 第二部分是完成握手之后,客户端向服务器端发送请求报文
- 第三部分是服务器完成处理后,向客户端发送响应内容(包括响应头、响应体)
- 结束会话信息
- http模块
Node的http模块包含对HTTP处理的封装