- Node.js 教程
- Node.js - 首頁
- Node.js - 簡介
- Node.js - 環境搭建
- Node.js - 第一個應用程式
- Node.js - REPL 終端
- Node.js - 命令列選項
- Node.js - 包管理器 (NPM)
- Node.js - 回撥函式概念
- Node.js - 上傳檔案
- Node.js - 傳送郵件
- Node.js - 事件
- Node.js - 事件迴圈
- Node.js - 事件發射器
- Node.js - 偵錯程式
- Node.js - 全域性物件
- Node.js - 控制檯
- Node.js - 程序
- Node.js - 應用程式擴充套件
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 緩衝區
- Node.js - 流
- Node.js - 檔案系統
- Node.js MySQL
- Node.js - MySQL 入門
- Node.js - MySQL 建立資料庫
- Node.js - MySQL 建立表
- Node.js - MySQL 插入資料
- Node.js - MySQL 查詢資料
- Node.js - MySQL 條件查詢
- Node.js - MySQL 排序
- Node.js - MySQL 刪除資料
- Node.js - MySQL 更新資料
- Node.js - MySQL 連線查詢
- Node.js MongoDB
- Node.js - MongoDB 入門
- Node.js - MongoDB 建立資料庫
- Node.js - MongoDB 建立集合
- Node.js - MongoDB 插入資料
- Node.js - MongoDB 查詢資料
- Node.js - MongoDB 查詢
- Node.js - MongoDB 排序
- Node.js - MongoDB 刪除資料
- Node.js - MongoDB 更新資料
- Node.js - MongoDB 資料限制
- Node.js - MongoDB 連線查詢
- Node.js 模組
- Node.js - 模組
- Node.js - 內建模組
- Node.js - 實用程式模組
- Node.js - Web 模組
- Node.js 有用資源
- Node.js - 快速指南
- Node.js - 有用資源
- Node.js - 討論
Node.js - Net 模組
Node.js net 模組用於建立伺服器和客戶端。此模組提供非同步網路包裝器,可以使用以下語法匯入。
var net = require("net")
方法
| 序號 | 方法及描述 |
|---|---|
| 1 |
net.createServer([options][, connectionListener]) 建立一個新的 TCP 伺服器。connectionListener 引數自動設定為 'connection' 事件的監聽器。 |
| 2 |
net.connect(options[, connectionListener]) 工廠方法,返回一個新的 'net.Socket' 並連線到指定的地址和埠。 |
| 3 |
net.createConnection(options[, connectionListener]) 工廠方法,返回一個新的 'net.Socket' 並連線到指定的地址和埠。 |
| 4 |
net.connect(port[, host][, connectListener]) 建立到主機上埠的 TCP 連線。如果省略主機,則假定為 'localhost'。connectListener 引數將被新增為 'connect' 事件的監聽器。這是一個工廠方法,它返回一個新的 'net.Socket'。 |
| 5 |
net.createConnection(port[, host][, connectListener]) 建立到主機上埠的 TCP 連線。如果省略主機,則假定為 'localhost'。connectListener 引數將被新增為 'connect' 事件的監聽器。這是一個工廠方法,它返回一個新的 'net.Socket'。 |
| 6 |
net.connect(path[, connectListener]) 建立到 path 的 Unix 套接字連線。connectListener 引數將被新增為 'connect' 事件的監聽器。這是一個工廠方法,它返回一個新的 'net.Socket'。 |
| 7 |
net.createConnection(path[, connectListener]) 建立到 path 的 Unix 套接字連線。connectListener 引數將被新增為 'connect' 事件的監聽器。這是一個工廠方法,它返回一個新的 'net.Socket'。 |
| 8 |
net.isIP(input) 測試輸入是否為 IP 地址。對於無效字串返回 0,對於 IPv4 地址返回 4,對於 IPv6 地址返回 6。 |
| 9 |
net.isIPv4(input) 如果輸入是 IPv4 地址,則返回 true,否則返回 false。 |
| 10 |
net.isIPv6(input) 如果輸入是 IPv6 地址,則返回 true,否則返回 false。 |
類 - net.Server
此類用於建立 TCP 或本地伺服器。
方法
| 序號 | 方法及描述 |
|---|---|
| 1 |
server.listen(port[, host][, backlog][, callback]) 在指定的埠和主機上開始接受連線。如果省略主機,伺服器將接受定向到任何 IPv4 地址 (INADDR_ANY) 的連線。埠值為零將分配一個隨機埠。 |
| 2 |
server.listen(path[, callback]) 啟動一個本地套接字伺服器,監聽給定路徑上的連線。 |
| 3 |
server.listen(handle[, callback]) handle 物件可以設定為伺服器或套接字(任何具有底層 _handle 成員的物件),或者一個 {fd: <n>} 物件。它將使伺服器在指定的控制代碼上接受連線,但假定檔案描述符或控制代碼已繫結到埠或域套接字。在 Windows 上不支援監聽檔案描述符。 |
| 4 |
server.listen(options[, callback]) options 的 port、host 和 backlog 屬性以及可選的回撥函式的行為與呼叫 server.listen(port, [host], [backlog], [callback]) 時相同。或者,可以使用 path 選項來指定 UNIX 套接字。 |
| 5 |
server.close([callback]) 當所有連線結束且伺服器發出 'close' 事件時最終關閉。 |
| 6 |
server.address() 返回由作業系統報告的伺服器的繫結地址、地址族名稱和埠。 |
| 7 |
server.unref() 在伺服器上呼叫 unref 將允許程式退出,如果這是事件系統中唯一活動的伺服器。如果伺服器已經 unrefd,則再次呼叫 unref 將沒有任何效果。 |
| 8 |
server.ref() unref 的反義詞,在先前未引用的伺服器上呼叫 ref 將不允許程式退出,如果它是剩下的唯一伺服器(預設行為)。如果伺服器已引用,則再次呼叫 ref 將沒有任何效果。 |
| 9 |
server.getConnections(callback) 非同步獲取伺服器上的併發連線數。當套接字傳送到 forks 時有效。回撥應接受兩個引數 err 和 count。 |
事件
| 序號 | 事件及描述 |
|---|---|
| 1 |
listening 在呼叫 server.listen 後繫結伺服器時發出。 |
| 2 |
connection 建立新連線時發出。套接字物件,連線物件可用於事件處理程式。Socket 是 net.Socket 的例項。 |
| 3 |
close 伺服器關閉時發出。請注意,如果存在連線,則此事件直到所有連線結束才會發出。 |
| 4 |
error 發生錯誤時發出。'close' 事件將在此事件之後直接呼叫。 |
類 - net.Socket
此物件是 TCP 或本地套接字的抽象。net.Socket 例項實現雙工流介面。它們可以由使用者建立並用作客戶端(使用 connect()),或者可以由 Node 建立並透過伺服器的 'connection' 事件傳遞給使用者。
事件
net.Socket 是一個 eventEmitter,它發出以下事件。
| 序號 | 事件及描述 |
|---|---|
| 1 |
lookup 解析主機名後但在連線之前發出。不適用於 UNIX 套接字。 |
| 2 |
connect 成功建立套接字連線時發出。 |
| 3 |
data 收到資料時發出。引數 data 將是 Buffer 或 String。資料的編碼由 socket.setEncoding() 設定。 |
| 4 |
end 套接字的另一端傳送 FIN 資料包時發出。 |
| 5 |
timeout 如果套接字因空閒而超時,則發出。這只是為了通知套接字處於空閒狀態。使用者必須手動關閉連線。 |
| 6 |
drain 寫入緩衝區變空時發出。可用於限制上傳。 |
| 7 |
error 發生錯誤時發出。'close' 事件將在此事件之後直接呼叫。 |
| 8 |
close 套接字完全關閉後發出一次。引數 had_error 是一個布林值,指示套接字是否因傳輸錯誤而關閉。 |
屬性
net.Socket 提供許多有用的屬性,以便更好地控制套接字互動。
| 序號 | 屬性及描述 |
|---|---|
| 1 |
socket.bufferSize 此屬性顯示當前緩衝要寫入的字元數。 |
| 2 |
socket.remoteAddress 遠端 IP 地址的字串表示形式。例如,'74.125.127.100' 或 '2001:4860:a005::68'。 |
| 3 |
socket.remoteFamily 遠端 IP 族系的字串表示形式。'IPv4' 或 'IPv6'。 |
| 4 |
socket.remotePort 遠端埠的數字表示形式。例如,80 或 21。 |
| 5 |
socket.localAddress 遠端客戶端連線的本地 IP 地址的字串表示形式。例如,如果您正在監聽 '0.0.0.0' 並且客戶端連線到 '192.168.1.1',則值為 '192.168.1.1'。 |
| 6 |
socket.localPort 本地埠的數字表示形式。例如,80 或 21。 |
| 7 |
socket.bytesRead 接收到的位元組數。 |
| 8 |
socket.bytesWritten 傳送的位元組數。 |
方法
| 序號 | 方法及描述 |
|---|---|
| 1 |
new net.Socket([options]) 構造一個新的套接字物件。 |
| 2 |
socket.connect(port[, host][, connectListener]) 為給定套接字開啟連線。如果給出了 port 和 host,則套接字將作為 TCP 套接字開啟,如果省略 host,則假定為 localhost。如果給出了 path,則套接字將作為 Unix 套接字開啟到該路徑。 |
| 3 |
socket.connect(path[, connectListener]) 為給定套接字開啟連線。如果給出了 port 和 host,則套接字將作為 TCP 套接字開啟,如果省略 host,則假定為 localhost。如果給出了 path,則套接字將作為 Unix 套接字開啟到該路徑。 |
| 4 |
socket.setEncoding([encoding]) 將套接字的編碼設定為可讀流。 |
| 5 |
socket.write(data[, encoding][, callback]) 在套接字上傳送資料。對於字串,第二個引數指定編碼——預設為 UTF8 編碼。 |
| 6 |
socket.end([data][, encoding]) 半關閉套接字,即傳送 FIN 資料包。伺服器仍然可能會發送一些資料。 |
| 7 |
socket.destroy() 確保此套接字上不再發生 I/O 活動。僅在發生錯誤(解析錯誤等)時才需要。 |
| 8 |
socket.pause() 暫停讀取資料。也就是說,不會發出 'data' 事件。用於限制上傳。 |
| 9 |
socket.resume() 在呼叫 pause() 後恢復讀取。 |
| 10 |
socket.setTimeout(timeout[, callback]) 將套接字設定為在套接字上空閒 timeout 毫秒後超時。預設情況下,net.Socket 沒有超時。 |
| 11 |
socket.setNoDelay([noDelay]) 停用 Nagle 演算法。預設情況下,TCP 連線使用 Nagle 演算法,它們在傳送資料之前緩衝資料。為 noDelay 設定 true 將在每次呼叫 socket.write() 時立即傳送資料。noDelay 預設值為 true。 |
| 12 |
socket.setKeepAlive([enable][, initialDelay]) 啟用/停用保持活動功能,並可選地設定在空閒套接字上傳送第一個保持活動探測之前的初始延遲。enable 預設值為 false。 |
| 13 |
socket.address() 返回由作業系統報告的套接字的繫結地址、地址族名稱和埠。返回一個具有三個屬性的物件,例如 { port: 12346, family: 'IPv4', address: '127.0.0.1' }。 |
| 14 |
socket.unref() 在套接字上呼叫 unref 將允許程式退出,如果這是事件系統中唯一活動的套接字。如果套接字已經 unrefd,則再次呼叫 unref 將沒有任何效果。 |
| 15 |
socket.ref() unref 的反義詞,在先前未引用的套接字上呼叫 ref 將不允許程式退出,如果它是剩下的唯一套接字(預設行為)。如果套接字已引用,則再次呼叫 ref 將沒有任何效果。 |
示例
建立一個名為 server.js 的 js 檔案,其中包含以下程式碼:
檔案:server.js
var net = require('net');
var server = net.createServer(function(connection) {
console.log('client connected');
connection.on('end', function() {
console.log('client disconnected');
});
connection.write('Hello World!\r\n');
connection.pipe(connection);
});
server.listen(8080, function() {
console.log('server is listening');
});
現在執行 server.js 檢視結果:
$ node server.js
驗證輸出。
server is listening
建立一個名為 client.js 的 js 檔案,其中包含以下程式碼:
檔案:client.js
var net = require('net');
var client = net.connect({port: 8080}, function() {
console.log('connected to server!');
});
client.on('data', function(data) {
console.log(data.toString());
client.end();
});
client.on('end', function() {
console.log('disconnected from server');
});
現在從另一個終端執行 client.js 檢視結果:
$ node client.js
驗證輸出。
connected to server! Hello World! disconnected from server
驗證在執行 server.js 的終端上的輸出。
server is listening client connected client disconnected
