Node.js v6.9.4
Net模塊提供1個異步網絡包裝器,它能夠創建被稱為流的TCP服務器和客戶端。
* 創建TCP服務器 *
const net = require('net');
let server = net.createServer((socket) => {
socket.on('data', (data) => {
console.log(data);
});
socket.write('這是1條TCP服務器發送的數據');
socket.end(() => {
console.log('鏈接斷開');
});
});
// grab a random port.
server.listen(3306, () => {
// "opened server on { address: '::', family: 'IPv6', port: 3306 }"
console.log('opened server on', server.address());
});
* 創建TCP客戶端 *
const net = require('net');
const client = net.createConnection({port: 3306}, () => {
//'connect' listener
console.log('connected to server!');
client.write('world!\r\n');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('disconnected from server');
});
* 先運行上面的服務器程序,然后運行客戶端程序,履行流程以下 *
1.服務器啟動,打印’opened server on { address: ‘::’, family: ‘IPv6’, port: 3306 }’
2.客戶端連接成功,打印’connected to server!’
3.客戶端發送數據’world!\r\n’,
4.服務器接受數據’connected to server!’,服務器發送數據’這是1條TCP服務器發送的數據’
5.客戶端打印接受數據
6.客戶端斷開
* 由于net.Server是1個EventEmitter實例,因此TCP服務器會有自定義注冊事件,自定義事件有以下4種: *
1.listening: 在調用server.listen()方法后觸發
2.connection: 當有新客戶連接時觸發
3.close: 當服務器關閉時觸發,調用server.close()后,服務器停止接受新的套接字連接,等待當前所有連接都斷開后,觸發該事件
4.error: 當服務器產生異常時,觸發該事件,’close’事件將會在此事件后直接調用
* 服務器可以同時與多個客戶端保持連連接,對每一個連接而言是典型的可寫可對Stream對象,稱為socket(socket是net.Socket的1個實例,net.Socket實例是EventEmitter),Stream對象可以用于服務器和客戶端之間的通訊,是1個雙工Stream接口,可以通過data事件讀取另外一端發送來的數據,可以通過write()方法向另外一端發送數據,連接事件有以下幾種自定義事件*
1.data: 1端調用write()發送數據時,另外一端觸發data()事件,參數數據是Buffer或String, 數據的編碼由socket.setEncoding()設置。
2.close: 當套接字關閉后觸發該事件
3.connect: 套接字建立成功后觸發
4.error: 當異常產生時觸發該事件
5.end: 當套接字的另外一端發送FIN數據包時觸發
6.drain: 當寫緩沖區為空時觸發改事件
7.timeout: 當套接字連接1段時間后觸發該事件,其實不關閉套接字,只是通知套接字
* const net = require(‘net’) *
* net.Socket是本地套接字或TCP的1個抽象,實現雙工Stream接口,可以由用戶創建并作用于客戶端,或由node創建,并通過服務器的’連接’事件傳遞給用戶 *
net模塊方法
上一篇 c++的應用領域是哪些?
下一篇 搭建web工作流實現自動化