# 网络编程
Node 模块
node 提供 net、dgram、http、https模块分别用于处理TCP、UDP、HTTP、HTTPS
# 构建TCP服务
- 三次握手:1.客服端请求连接 2.服务端响应 3.客户端开始传输
一旦建立。所有的会话都基本完成
var net = require('net')
var server = net.createServer(function(socket) {
// 新的连接
socket.on('data', function(data) {
socket.write('hi')
})
socket.on('end', function() {
console.log('close connect')
})
socket.write('build tcp connect')
})
server.listen(8124, function() {
console.log('server bound')
})
# 构建UDP服务
一个套接字可以与多个UDP服务通信
# 创建UDP套接字
var dgram = require('dgram')
var socket = dgram.createSocket('udp4')
# 创建UDP服务端
var dgram = require('dgram')
var server = dgeram.createSocket('udp4')
server.on('message', function(msg, rinfo) {
console.log(msg, rinfo.address, rinfo.port)
})
server.on('listening', function() {
var address = server.address()
console.log(address.address, address.port)
})
# 创建UDP客户端
var dgram = require('dgram')
var message = new Buffer('hi, I like you!')
var client = dgram.createSocket('udp4')
client.send(message, 0, message.length, 41234,'localhost', function(err, bytes) {
client.close()
})
# 构建HTTP服务
var http = require('http')
http.createServer(function(req, res) {
res.setHeader('Content-Type', 'text/plain;charset=utf-8')
res.end('你好!')
})
http.listen(80, function() {
console.log('run ok')
})
# 构建WebSocket服务
var socket = new WebSocket('ws://127.0.0.1:8888')
socket.onopen = function () {
setInterval(function() {
if (socket.bufferedAmount == 0) {
socket.send(getUpdateData())
}
}, 50)
}
socket.onmessage = function (event) {
console.log(event)
}
# 网络服务安全
- node 网络安全提供3个模块: crypto、tls、https
# TLS/SSL -- 公钥/私钥
- 是一个非对称结构,每个服务器端和客户端都有自己的公私钥
- 公钥 -- 用来加密要传输的数据
- 私钥 -- 用来解密接收到的数据
- 建立安全传输之前,客户端和服务端之间需要交换公私钥