Node.js 的 net
模塊可以方便的創建TCP 服務,,以下是使用 net 模塊創建的tcp 服務和客戶端的一個簡單例子。
一、創建TCP Server
var net = require('net');
var tcp_server = net.createServer(); // 創建 tcp server
var Sockets = {};
var SocketID = 1;
// 監聽 端口
tcp_server.listen(5678,function (){
console.log('tcp_server listening 5678');
});
// 處理客戶端連接
tcp_server.on('connection',function (socket){
console.log(socket.address());
Sockets[SocketID] =socket;
SocketID++;
DealConnect(socket)
})
tcp_server.on('error', function (){
console.log('tcp_server error!');
})
tcp_server.on('close', function () {
console.log('tcp_server close!');
})
// 處理每個客戶端消息
function DealConnect(socket){
socket.on('data',function(data){
data = data.toString();
// 向所有客戶端廣播消息
for(var i in Sockets){
Sockets[i].write(data);
}
// socket.write(data);
console.log('received data %s',data);
})
// 客戶端正常斷開時執行
socket.on('close', function () {
console.log('client disconneted!');
})
// 客戶端正異斷開時執行
socket.on("error", function (err) {
console.log('client error disconneted!');
});
}
二、創建 TCP Client
var net = require('net');
// 指定連接的tcp server ip,端口
var options = {
host : '172.30.20.10',
port : 5678
}
var tcp_client = net.Socket();
// 連接 tcp server
tcp_client.connect(options,function(){
console.log('connected to Server');
tcp_client.write('I am tcp_client of node!');
})
// 接收數據
tcp_client.on('data',function(data){
console.log('received data: %s from server', data.toString());
})
tcp_client.on('end',function(){
console.log('data end!');
})
tcp_client.on('error', function () {
console.log('tcp_client error!');
})