在Node.js中,主要有三种socket:TCP,UDP和Unix域套接字。以下分别介绍这TCP/UDP的使用方法和示例:
TCP socket
TCP socket提供了可靠的、面向连接的通信流,适用于需要可靠传输的应用,例如Web浏览器的HTTP请求。在Node.js中,可以使用net模块创建TCP服务器和客户端。以下是一个创建TCP服务器和客户端的示例:
服务器端代码(app.js):
var express = require('express');
var app = express();
var net = require('net');
var HOST = '127.0.0.1';
var PORT = 8081;
net.createServer(function(sock) {
console.log('获得一个连接');
sock.on('data', function(data) {
console.log('从客户端接受的数据: ' + data);
sock.write('向客户端回发数据 "' + data + "\n");
sock.end("关闭socket"); // 触发客户端和服务端的close事件监听
});
}).listen(PORT, HOST);
客户端代码(client.js):
var net = require('net');
var HOST = '127.0.0.1';
var PORT = 8081;
var client = net.createConnection(PORT, HOST);
client.on('connect', function() {
console.log('连接到服务器');
client.write('客户端发送数据\n');
});
client.on('data', function(data) {
console.log('从服务器接受的数据: ' + data);
});
UDP socket
UDP socket提供了无连接、不可靠的通信流,适用于不需要可靠传输的应用,例如实时游戏或VoIP应用。在Node.js中,可以使用dgram模块创建UDP服务器和客户端。以下是一个创建UDP服务器和客户端的示例:
服务器端代码(server.js):
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on('listening', function() {
var address = server.address();
console.log('UDP服务器正在监听 %s:%d', address.address, address.port);
});
server.on('message', function(message, remote) {
console.log('从 %s:%d 收到消息: %s', remote.address, remote.port, message);
server.send('向客户端回发数据 "' + message + "\n", remote.port, remote.address);
});
server.bind(12345); // 绑定端口号,并开始监听消息
客户端代码(client.js):
var dgram = require('dgram');
var message = Buffer.from('客户端发送数据\n');
var client = dgram.createSocket('udp4');
client.send(message, 0, message.length, 12345, 'localhost', function(err, bytes) {
if (err) throw err;
console.log('UDP客户端已发送消息');
});
client.on('message', function(message, remote) {
console.log('从 %s:%d 收到消息: %s', remote.address, remote.port, message);
});