真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Node.jsAPI中net模塊的用法

這篇文章主要講解了Node.js API中net模塊的用法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

公司主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)推出鞏留免費(fèi)做網(wǎng)站回饋大家。

net 模塊提供了創(chuàng)建基于流的 TCP 或 IPC 服務(wù)器(net.createServer())和客戶端(net.createConnection()) 的異步網(wǎng)絡(luò) API。

通過(guò)以下方式引入:

const net = require('net');

net.isIP(input)

說(shuō)明:

測(cè)試 input 是否是 IP 地址。無(wú)效的字符串則返回 0,IPv4 地址則返回 4,IPv6的地址則返回 6。

demo:

const net = require('net');
console.log( net.isIP('127.0.0.1') );
// 4

net.isIPv4(input)

說(shuō)明:

如果 input 是 IPv4 地址則返回 true,否則返回 false。

demo:

const net = require('net');
console.log( net.isIPv4('127.0.0.1') );
// true

net.isIPv6(input)

說(shuō)明:

如果 input 是 IPv6 地址則返回 true,否則返回 false。

demo:

const net = require('net');
console.log( net.isIPv6('127.0.0.1') );
// false

net.createServer([options][, connectionListener])

說(shuō)明:

創(chuàng)建一個(gè)新的TCP或IPC服務(wù)。
options:
allowHalfOpen: 表示是否允許一個(gè)半開(kāi)的TCP連接。 默認(rèn)值: false
pauseOnConnect:一旦來(lái)了連接,是否暫停套接字。 默認(rèn)值: false
connectionListener:事件自動(dòng)設(shè)置一個(gè)監(jiān)聽(tīng)器。
如果 allowHalfOpen 被設(shè)置為true, 那么當(dāng)socket.end() 被顯式調(diào)用時(shí),
如果對(duì)邊套接字發(fā)送了一個(gè)FIN包,服務(wù)只會(huì)返回一個(gè)FIN數(shù)據(jù)包, 這會(huì)持續(xù)到后來(lái)連接處在半閉狀態(tài) (不可讀但是可寫(xiě))。
如果 pauseOnConnect 被設(shè)置為 true, 那么與連接相關(guān)的套接字都會(huì)暫停,也不會(huì)從套接字句柄讀取數(shù)據(jù)。
這樣就允許連接在進(jìn)程之間傳遞,避免數(shù)據(jù)被最初的進(jìn)程讀取。 如果想從一個(gè)暫停的套接字開(kāi)始讀數(shù)據(jù),請(qǐng)調(diào)用socket.resume()
服務(wù)可以是一個(gè)TCP服務(wù)或者一個(gè) IPC 服務(wù), 這取決于listen() 監(jiān)聽(tīng)什么

demo:

const net = require('net');
const server = net.createServer((c) => {
 c.write('hello\r\n');
 c.pipe(c);
});
server.listen(8124, () => {
 console.log('server bound');
});

net.createConnection()

說(shuō)明:

一個(gè)用于創(chuàng)建 net.Socket 的工廠函數(shù),立即使用 socket.connect() 初始化鏈接,然后返回啟動(dòng)連接的 net.Socket。
當(dāng)連接建立之后,在返回的 socket 上將觸發(fā)一個(gè) ‘connect' 事件。
若制定了最后一個(gè)參數(shù) connectListener,則它將會(huì)被添加到 ‘connect' 事件作為一個(gè)監(jiān)聽(tīng)器。
注意: net.connect() 函數(shù)也是該函數(shù)的別名。

net.createConnection(options[, connectListener])

說(shuō)明:

與net.createConnection()功能一致。
connectListener:如果傳遞該參數(shù),將被添加為返回 socket 上的 ‘connect' 事件上的監(jiān)聽(tīng)器。
注意: net.connect(options[, connectListener]) 函數(shù)也是該函數(shù)的別名。

demo:

const net = require('net');
const client = net.createConnection({ port: 8124 }, () => {
 //'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');
});
// 如果要連接到 /tmp/echo.sock,第二行只需要改為:
const client = net.createConnection({ path: '/tmp/echo.sock' });

net.createConnection(path[, connectListener])

說(shuō)明:

初始化一個(gè) IPC 連接。
該方法使用所有默認(rèn)選項(xiàng)創(chuàng)建一個(gè)新的 net.Socket,
使用 socket.connect(path[, connectListener]) 立即初始化連接,然后返回初始化連接的 net.Socket。
path: Socket 應(yīng)該被連接到的路徑。
注意: net.connect(path[, connectListener]) 函數(shù)也是該函數(shù)的別名。

net.createConnection(port[, host][, connectListener])

說(shuō)明:

初始化一個(gè)TCP連接
這個(gè)函數(shù)用默認(rèn)配置創(chuàng)建一個(gè)新的net.Socket,
然后socket.connect(port[, host][, connectListener])初始化一個(gè)連接,并返回開(kāi)啟連接的那個(gè) net.Socket。
注意: net.connect(port[, host][, connectListener]) 函數(shù)也是該函數(shù)的別名。

net.Server 類

說(shuō)明:

這個(gè)類用于創(chuàng)建 TCP 或 IPC server。

new net.Server([options][, connectionListener])

說(shuō)明:

創(chuàng)建一個(gè)net.Server實(shí)例。
與net.createServer([options][, connectionListener])功能一致

demo:

const net = require('net');
const server = new net.Server((c) => {
 // 'connection' listener
 c.write('hello');
});
server.on('error', (err) => {
 throw err;
});
server.listen(8124, () => {
 console.log('server bound');
});

server.listen()

說(shuō)明:

為 connections 啟動(dòng)一個(gè) server 監(jiān)聽(tīng).
一個(gè) net.Server 可以是一個(gè) TCP 或者 一個(gè) IPC server,這取決于它監(jiān)聽(tīng)什么。
可能的參數(shù):
server.listen(handle[, backlog][, callback])
server.listen(options[, callback])
server.listen(path[, backlog][, callback]) for IPC servers
server.listen([port][, host][, backlog][, callback]) for TCP servers
這個(gè)函數(shù)是異步的。當(dāng) server 開(kāi)始監(jiān)聽(tīng),'listening' 事件會(huì)觸發(fā)。
最后一個(gè)參數(shù) callback 將會(huì)被添加為'listening' 事件的監(jiān)聽(tīng)器。
監(jiān)聽(tīng)時(shí),其中一個(gè)最常見(jiàn)的錯(cuò)誤是 EADDRINUSE。這是因?yàn)榱硪粋€(gè) server 已經(jīng)監(jiān)聽(tīng)了該請(qǐng)求中的 port / path / handle。

server.listen(handle[, backlog][, callback])

說(shuō)明:

啟動(dòng)一個(gè)服務(wù)器,監(jiān)聽(tīng)已經(jīng)綁定到端口、UNIX 域套接字或 Windows 命名管道的給定句柄上的連接。
句柄對(duì)象可以是服務(wù)器、套接字(任何具有底層 _handle 成員的東西),
也可以是具有 fd 成員的對(duì)象,該成員是一個(gè)有效的文件描述符。
注意:在Windows上不支持在文件描述符上進(jìn)行監(jiān)聽(tīng)。

server.listen(options[, callback])

說(shuō)明:

啟動(dòng)一個(gè)TCP服務(wù)監(jiān)聽(tīng)輸入的port和host。
options:必須。支持以下參數(shù)屬性:
port:端口
host:主機(jī)
path:如果指定了 port 參數(shù)則會(huì)被忽略。
如果指定了 port 參數(shù),該方法的行為跟 server.listen([port][, hostname][, backlog][, callback]) 一樣。
否則,如果指定了 path 參數(shù),該方法的行為與 server.listen(path[, backlog][, callback]) 一致。
如果沒(méi)有 port 或者 path 參數(shù),則會(huì)拋出一個(gè)錯(cuò)誤。

server.listen(path[, backlog][, callback])

說(shuō)明:

啟動(dòng)一個(gè) IPC 服務(wù)器監(jiān)聽(tīng)給定 path 的連接。
path:服務(wù)器需要監(jiān)聽(tīng)的路徑

server.listen([port][, host][, backlog][, callback])

說(shuō)明:

啟動(dòng)一個(gè)TCP服務(wù)監(jiān)聽(tīng)輸入的port和host。
如果port省略或是0,系統(tǒng)會(huì)隨意分配一個(gè)在'listening'事件觸發(fā)后能被server.address().port檢索的無(wú)用端口。

server.listening

說(shuō)明:

一個(gè)布爾值, 表明 server 是否正在監(jiān)聽(tīng)連接

demo:

const net = require('net');
const server = new net.Server((c) => {
 // 'connection' listener
 c.write('hello');
});
server.on('error', (err) => {
 throw err;
});
server.listen(8124, () => {
 console.log(server.listening);
});
// true

listening 事件

說(shuō)明:

當(dāng)服務(wù)被綁定后調(diào)用

demo:

const net = require('net');
const server = new net.Server((c) => {
 // 'connection' listener
 c.write('hello');
});
server.on('listening', () => {
 console.log('開(kāi)始監(jiān)聽(tīng)');
});
server.listen(8124, () => {
 console.log(server.listening);
});
// 開(kāi)始監(jiān)聽(tīng)

server.address()

說(shuō)明:

如果在IP socket上監(jiān)聽(tīng),則返回綁定的ip地址, 地址族和操作系統(tǒng)報(bào)告的服務(wù)端口
在找到操作系統(tǒng)分配的地址時(shí),找到指定的端口是有用的.
返回一個(gè)有 port, family, 和 address 屬性: { port: 12346, family: ‘IPv4', address: ‘127.0.0.1' }的對(duì)象
對(duì)于在管道或UNIX域套接字上偵聽(tīng)的server,該名稱將返回為字符串
只有到了 ‘listening' 事件被觸發(fā)時(shí)候.才可以調(diào)用 server.address()

demo:

const net = require('net');
const server = new net.Server((c) => {
 // 'connection' listener
 c.write('hello');
});
server.on('error', (err) => {
 throw err;
});
server.listen(8124, () => {
 console.log('opened server on', server.address());
});
// opened server on { address: '::', family: 'IPv6', port: 8124 }

server.maxConnections

說(shuō)明:

設(shè)置該屬性使得當(dāng) server 連接數(shù)過(guò)多時(shí)拒絕連接。
一旦將一個(gè) socket 發(fā)送給 child_process.fork() 生成的子進(jìn)程,就不推薦使用該選項(xiàng)。

demo:

const net = require('net');
const server = new net.Server((c) => {
 // 'connection' listener
 c.write('hello');
});
server.maxConnections = 10;
server.listen(8124, () => {
 console.log(server.listening);
});

server.getConnections(callback)

說(shuō)明:

異步獲取服務(wù)器的當(dāng)前并發(fā)連接數(shù)。當(dāng) socket 被傳遞給子進(jìn)程時(shí)工作。
回調(diào)函數(shù)的兩個(gè)參數(shù)是 err 和 count。

demo:

const net = require('net');
const server = new net.Server((c) => {
 // 'connection' listener
 c.write('hello');
});
server.getConnections((err, count) => {
 console.log(count);
});
server.listen(8124, () => {
 console.log(server.listening);
});
// 0

說(shuō)明:

獲取服務(wù)器的當(dāng)前并發(fā)連接數(shù)。

connection 事件

說(shuō)明:

當(dāng)一個(gè)新的connection建立的時(shí)候觸發(fā). 傳遞一個(gè) net.Socket的實(shí)例對(duì)象.

demo:

const net = require('net');
const server = new net.Server((c) => {
  // 'connection' listener
  c.write('hello');
});
server.on('connection', (socket) => {
 console.log(socket);
});
server.listen(8124, () => {
  console.log(server.listening);
});

server.unref()

說(shuō)明:

如果這個(gè)server在事件系統(tǒng)中是唯一有效的,那么對(duì)server調(diào)用unref將允許程序退出。
如果這個(gè)server已經(jīng)調(diào)用過(guò)unref那么再次調(diào)用將不會(huì)再有效果。

server.ref()

說(shuō)明:

在一個(gè)已經(jīng)調(diào)用 unref 的 server 中調(diào)用 ref,如果 server 是僅存的 server,則程序不會(huì)退出(默認(rèn))。
對(duì)一個(gè)已經(jīng)調(diào)用 ref 的 server 再次調(diào)用 ref 將不會(huì)再有效果。

server.close([callback])

說(shuō)明:

停止 server接受建立新的connections并保持已經(jīng)存在的connections.
此功能是異步的,當(dāng)所有的connections關(guān)閉同時(shí)server響應(yīng) ‘close'事件的時(shí)候,server將會(huì)最終關(guān)閉.
一旦'close'發(fā)生將會(huì)調(diào)用可選的回調(diào)函數(shù). 與該事件不同, 如果服務(wù)器在關(guān)閉時(shí)未打開(kāi),則將使用錯(cuò)誤作為唯一參數(shù)。

demo:

const net = require('net');
const server = new net.Server((c) => {
  // 'connection' listener
  c.write('hello');
});
server.listen(8124, () => {
  console.log(server.listening);
});
server.close();

close 事件

說(shuō)明:

當(dāng)server關(guān)閉的時(shí)候觸發(fā). 注意,如果有連接存在, 直到所有的連接結(jié)束才會(huì)觸發(fā)這個(gè)事件

demo:

const net = require('net');
const server = new net.Server((c) => {
  // 'connection' listener
  c.write('hello');
});
server.on('close', () => {
 console.log('server 已關(guān)閉')
})
server.listen(8124, () => {
  console.log(server.listening);
});
server.close();
// server 已關(guān)閉

error 事件

說(shuō)明:

當(dāng)錯(cuò)誤出現(xiàn)的時(shí)候觸發(fā).
不同于 net.Socket, ‘close' 事件不會(huì)在這個(gè)事件觸發(fā)后繼續(xù)觸發(fā)
除非 server.close() 是手動(dòng)調(diào)用. 在 server.listen()中的例子.

demo:

const net = require('net');
const server = new net.Server((c) => {
  // 'connection' listener
  c.write('hello');
});
server.on('error', (err) => {
 console.log('發(fā)生異常', err);
})
server.listen(8124, () => {
  console.log(server.listening);
});

net.Socket 類

說(shuō)明:

這個(gè)類是 TCP 或 UNIX Socket 的抽象(在Windows上使用命名管道,而UNIX使用域套接字)。
一個(gè)net.Socket也是一個(gè)duplex stream,所以它能被讀或?qū)?,并且它也是一個(gè)EventEmitter。
net.Socket可以被用戶創(chuàng)建并直接與server通信。
舉個(gè)例子,它是通過(guò)net.createConnection()返回的,所以用戶可以使用它來(lái)與server通信。
當(dāng)一個(gè)連接被接收時(shí),它也能被Node.js創(chuàng)建并傳遞給用戶。
比如,它是通過(guò)監(jiān)聽(tīng)在一個(gè)net.Server上的'connection'事件觸發(fā)而獲得的,那么用戶可以使用它來(lái)與客戶端通信。

new net.Socket([options])

說(shuō)明:

創(chuàng)建一個(gè) socket 對(duì)象。
options:
fd:如果指定了該參數(shù),則使用一個(gè)給定的文件描述符包裝一個(gè)已存在的 socket,否則將創(chuàng)建一個(gè)新的 socket。
allowHalfOpen:指示是否允許半打開(kāi)的 TCP 連接。默認(rèn)是 false。
readable:當(dāng)傳遞了 fd 時(shí)允許讀取 socket,否則忽略。默認(rèn) false。
writable:當(dāng)傳遞了 fd 時(shí)允許寫(xiě)入 socket,否則忽略。默認(rèn) false。
新創(chuàng)建的 socket 可以是 TCP socket 也可以是 IPC 端點(diǎn)流,取決于它連接 connect() 到什么。

socket.connect()

說(shuō)明:

在給定的套接字上啟動(dòng)一個(gè)連接。
該方法是異步的。當(dāng)連接建立了的時(shí)候,'connect' 事件將會(huì)被觸發(fā)。
如果連接過(guò)程中有問(wèn)題,'error' 事件將會(huì)代替 ‘connect' 事件被觸發(fā),并將錯(cuò)誤信息傳遞給 ‘error' 監(jiān)聽(tīng)器。
最后一個(gè)參數(shù) connectListener,如果指定了,將會(huì)被添加為 ‘connect' 事件的。
可能的用法:
socket.connect(options[, connectListener])
socket.connect(path[, connectListener]) 用于 IPC 連接。
socket.connect(port[, host][, connectListener]) 用于 TCP 。

socket.connect(options[, connectListener])

說(shuō)明:

在給定的 socket 上初始化一個(gè)連接。
通常該方法是不需要的,應(yīng)該使用 net.createConnection() 來(lái)創(chuàng)建和打開(kāi) socket。
一般只在實(shí)現(xiàn)一個(gè)自定義的 Socket 的時(shí)候使用該方法。
對(duì)于 TCP 連接可能的 options 有:
port 必須。Socket 連接的端口。
host Socket 連接的主機(jī)。默認(rèn)是 ‘localhost'.
localAddress Socket 連接的本地地址。
localPort Socket 連接的本地端口。
family IP棧的版本,可以是4或6。默認(rèn)值為4。
hints 可選的DNS.lookup() hints.
lookup 自定義的 lookup 方法。默認(rèn)是 dns.lookup().
對(duì)于 IPC 連接可能的 options 有:
path 必須??蛻舳诉B接的路徑。

socket.connect(path[, connectListener])

說(shuō)明:

在給定的 socket 上初始化 IPC 。
相當(dāng)使用 { path: path } 作為 options 調(diào)用 socket.connect(options[, connectListener]) 方法。

socket.connect(port[, host][, connectListener])

說(shuō)明:

在給定的 socket 上初始化一個(gè) TCP 連接。
相當(dāng)于使用 {port: port, host: host} 作為 options 調(diào)用 socket.connect(options[, connectListener]) 方法。

connect 事件

說(shuō)明:

當(dāng)一個(gè) socket 連接成功建立的時(shí)候觸發(fā)該事件。

socket.connecting

說(shuō)明:

該屬性如果為 true 則socket.connect(options[, connectListener]) 被調(diào)用但還未結(jié)束。
當(dāng)發(fā)送 connect 事件或調(diào)用 socket.connect(options[, connectListener]) 的回調(diào)函數(shù)的時(shí)候會(huì)被設(shè)置為 false。

close 事件

說(shuō)明:

一旦 socket 完全關(guān)閉就發(fā)出該事件。
參數(shù) had_error 是 boolean 類型,表明 socket 被關(guān)閉是否取決于傳輸錯(cuò)誤。

data 事件

說(shuō)明:

當(dāng)接收到數(shù)據(jù)的時(shí)觸發(fā)該事件。data 參數(shù)是一個(gè) Buffer 或 String。
數(shù)據(jù)編碼由 socket.setEncoding() 設(shè)置。
注意:當(dāng) Socket 發(fā)送 data 事件的時(shí)候,如果沒(méi)有監(jiān)聽(tīng)者數(shù)據(jù)將會(huì)丟失。

drain 事件

說(shuō)明:

當(dāng)寫(xiě)入緩沖區(qū)變?yōu)榭諘r(shí)觸發(fā)。可以用來(lái)做上傳節(jié)流。

error 事件

說(shuō)明:

當(dāng)錯(cuò)誤發(fā)生時(shí)觸發(fā)。'close' 事件也會(huì)緊接著該事件被觸發(fā)。

lookup 事件

說(shuō)明:

在找到主機(jī)之后創(chuàng)建連接之前觸發(fā)。不可用于 UNIX socket。
參數(shù):
err:錯(cuò)誤對(duì)象。
address:IP地址
family:地址類型。
host:主機(jī)

timeout 事件

說(shuō)明:

當(dāng) socket 超時(shí)的時(shí)候觸發(fā)。該事件只是用來(lái)通知 socket 已經(jīng)閑置。用戶必須手動(dòng)關(guān)閉。

socket.address()

說(shuō)明:

返回操作系統(tǒng)報(bào)告的 socket 的地址、地址族和端口。
返回的對(duì)象有三個(gè)屬性,例如: { port: 12346, family: ‘IPv4', address: ‘127.0.0.1' }

socket.bufferSize

說(shuō)明:

net.Socket 具有該屬性,socket.write() 工作時(shí)需要。它可以幫助用戶快速啟動(dòng)和運(yùn)行。
計(jì)算機(jī)(處理速度)不能總是跟上 socket 的寫(xiě)入速度 – 網(wǎng)絡(luò)連接可能太慢了。
Node.js 內(nèi)部將維護(hù)一個(gè)寫(xiě)入 socket 的數(shù)據(jù)隊(duì)列,并在可能的時(shí)候?qū)?shù)據(jù)發(fā)送出去。
(內(nèi)部實(shí)現(xiàn)是對(duì) socket 的文件描述符進(jìn)行輪訓(xùn)其是否是可寫(xiě)狀態(tài)。)
使用內(nèi)部緩沖的結(jié)果是可能造成內(nèi)存的增長(zhǎng)。此屬性顯示當(dāng)前即將被寫(xiě)入的緩沖的字符數(shù)。
(字符串的數(shù)目大致等于即將被寫(xiě)入的字節(jié),但緩沖可能包含字符串,而字符串是惰性編碼的,所以實(shí)際的字節(jié)數(shù)是不知道的。)
對(duì)處理大量或持續(xù)增長(zhǎng)的 bufferSize 有經(jīng)驗(yàn)的用戶應(yīng)該注意使用 socket.pause() and socket.resume() 對(duì)他們程序中的數(shù)據(jù)流進(jìn)行節(jié)流。

socket.bytesRead

說(shuō)明:

接收的字節(jié)數(shù)量。

socket.bytesWritten

說(shuō)明:

發(fā)送的字節(jié)數(shù)量。

socket.destroy([exception])

說(shuō)明:

確保在該 socket 上不再有 I/O 活動(dòng)。僅在出現(xiàn)錯(cuò)誤的時(shí)候才需要(如解析錯(cuò)誤等)。
如果制定了 exception,則將會(huì)觸發(fā)一個(gè) ‘error' 事件,任何監(jiān)聽(tīng)器都將接收到 exception 作為一個(gè)參數(shù)。

socket.destroyed

說(shuō)明:

一個(gè)布爾值,用來(lái)指示連接是否已經(jīng)被銷毀。一旦連接被銷毀就不能再使用它傳輸任何數(shù)據(jù)。

socket.end([data][, encoding])

說(shuō)明:

半關(guān)閉 socket。例如發(fā)送一個(gè) FIN 包。服務(wù)端仍可以發(fā)送數(shù)據(jù)。
如果指定了 data,則相當(dāng)于調(diào)用 socket.write(data, encoding) 之后再調(diào)用 socket.end()。

end 事件

說(shuō)明:

當(dāng) socket 的另一端發(fā)送一個(gè) FIN 包的時(shí)候觸發(fā),從而結(jié)束 socket 的可讀端。
默認(rèn)情況下(allowHalfOpen為false),socket 將發(fā)送一個(gè) FIN 數(shù)據(jù)包,
并且一旦寫(xiě)出它的等待寫(xiě)入隊(duì)列就銷毀它的文件描述符。
當(dāng)然,如果 allowHalfOpen 為 true,socket 就不會(huì)自動(dòng)結(jié)束 end() 它的寫(xiě)入端,允許用戶寫(xiě)入任意數(shù)量的數(shù)據(jù)。
用戶必須調(diào)用 end() 顯示地結(jié)束這個(gè)連接(例如發(fā)送一個(gè) FIN 數(shù)據(jù)包。)

socket.localAddress

說(shuō)明:

遠(yuǎn)程客戶端連接的本地 IP 地址字符串。
例如,一個(gè)服務(wù)端正在連接到 ‘0.0.0.0',客戶端連接到的是 ‘192.168.1.1',則 socket.localAddress 的值是 ‘192.168.1.1'。

socket.localPort

說(shuō)明:

用數(shù)字表示的本地端口。例如 80 或 21。

socket.pause()

說(shuō)明:

暫停讀寫(xiě)數(shù)據(jù)。也就是說(shuō),'data' 將不會(huì)再被觸發(fā)。可以用于上傳節(jié)流

socket.resume()

說(shuō)明:

在調(diào)用 socket.pause() 之后恢復(fù)讀取數(shù)據(jù)。

socket.unref()

說(shuō)明:

如果活躍的 socket 是事件系統(tǒng)中僅存的 socket,則調(diào)用 unref 將會(huì)允許程序退出。
對(duì)一個(gè)已經(jīng)調(diào)用了 unref 的 socket 再調(diào)用 unref 無(wú)效。

socket.ref()

說(shuō)明:

與 unref 相反,在一個(gè)已經(jīng)調(diào)用 unref 的 socket 中調(diào)用 ref,
如果 socket 是僅存的 socket,則程序不會(huì)退出(默認(rèn))。對(duì)一個(gè)已經(jīng)調(diào)用 ref 的 socket 再次調(diào)用 ref 將不會(huì)再有效果。

socket.remoteAddress

說(shuō)明:

用字符串表示的遠(yuǎn)程 IP 地址。例如 ‘74.125.127.100' 或 ‘2001:4860:a005::68'。
如果 socket 被銷毀了(如客戶端已經(jīng)失去連接)則其值為 undefined。

socket.remoteFamily

說(shuō)明:

用字符串表示的遠(yuǎn)程 IP 協(xié)議族。'IPv4′ 或 ‘IPv6'。

socket.remotePort

說(shuō)明:

用數(shù)字表示的遠(yuǎn)程端口。例如 80 或 21。

socket.setEncoding([encoding])

說(shuō)明:

設(shè)置作為可讀流(Readable Stream)的編碼。

socket.setKeepAlive([enable][, initialDelay])

說(shuō)明:

啟用/禁用長(zhǎng)連接功能, 并且在第一個(gè)長(zhǎng)連接探針被發(fā)送到一個(gè)空閑的 socket 之前可選則配置初始延遲。enable 默認(rèn)為 false。
initialDelay(毫秒)用來(lái)設(shè)置接收到最后一個(gè)數(shù)據(jù)包和發(fā)送第一個(gè)長(zhǎng)連接探針之間的延遲。
將 initialDelay 設(shè)置為 0,則會(huì)保持默認(rèn)值(或之前設(shè)置的值)不變。默認(rèn)是 0。

socket.setNoDelay([noDelay])

說(shuō)明:

禁止 Nagle 。默認(rèn)情況下 TCP 連接使用 Nagle 算法,在發(fā)送之前緩沖數(shù)據(jù)。
將 noDelay 設(shè)置為 true 將會(huì)在每次 socket.write() 被調(diào)用的時(shí)候立即發(fā)送數(shù)據(jù)。noDelay默認(rèn)是 true。

socket.setTimeout(timeout[, callback])

說(shuō)明:

當(dāng) socket 在 timeout 毫秒不活動(dòng)之后將其設(shè)置為超時(shí)狀態(tài)。默認(rèn) net.Socket 沒(méi)有超時(shí)。
當(dāng)一個(gè)閑置的超時(shí)被觸發(fā),socket 將會(huì)收到一個(gè) ‘timeout' 事件,但連接不會(huì)被斷開(kāi)。
用戶必須手動(dòng)調(diào)用 socket.end() 或 socket.destroy() 來(lái)斷開(kāi)連接。
如果 timeout 是 0,則存在的閑置超時(shí)將會(huì)被禁止。
可選的 callback 參數(shù)將會(huì)被當(dāng)作一個(gè)時(shí)間監(jiān)聽(tīng)器被添加到 ‘timeout' 事件。

socket.write(data[, encoding][, callback])

說(shuō)明:

在 socket 上發(fā)送數(shù)據(jù)。第二個(gè)參數(shù)制定了字符串的編碼 – 默認(rèn)是 UTF8 編碼。
如果全部數(shù)據(jù)都成功刷新到內(nèi)核的緩沖則返回 true。
如果全部或部分?jǐn)?shù)據(jù)在用戶內(nèi)中排隊(duì),則返回 false。當(dāng)緩沖再次空閑的時(shí)候?qū)⒂|發(fā) ‘drain' 事件。
當(dāng)數(shù)據(jù)最終都被寫(xiě)出之后,可選的 callback 參數(shù)將會(huì)被執(zhí)行 – 可能不會(huì)立即執(zhí)行。

看完上述內(nèi)容,是不是對(duì)Node.js API中net模塊的用法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前名稱:Node.jsAPI中net模塊的用法
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/gdiigd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部