當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js net.createServer([options][, connectionListener])用法及代碼示例


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

添加於:v0.5.0
  • options <Object>

    • allowHalfOpen <boolean> 如果設置為 false ,那麽當可讀端結束時,套接字將自動結束可寫端。 默認: false
    • pauseOnConnect <boolean> 指示套接字是否應在傳入連接時暫停。 默認: false
    • noDelay <boolean> 如果設置為 true ,它會在收到新的傳入連接後立即禁用 Nagle 算法。 默認: false
    • keepAlive <boolean> 如果設置為 true ,它會在收到新的傳入連接後立即在套接字上啟用 keep-alive 函數,與 socket.setKeepAlive([enable][, initialDelay]) 中所做的類似。 默認: false
    • keepAliveInitialDelay <number> 如果設置為正數,它會設置在空閑套接字上發送第一個保活探測之前的初始延遲。 默認: 0
  • connectionListener <Function> 自動設置為 'connection' 事件的偵聽器。

  • 返回: <net.Server>

創建一個新的 TCP 或 IPC 服務器。

如果 allowHalfOpen 設置為 true ,當套接字的另一端發出傳輸結束信號時,服務器隻會在顯式調用 socket.end() 時發回傳輸結束。例如,在 TCP 上下文中,當接收到 FIN 打包時,隻有在顯式調用 socket.end() 時才會發回打包的 FIN。在那之前,連接是half-closed(不可讀但仍可寫)。有關詳細信息,請參閱 'end' 事件和RFC 1122(第 4.2.2.13 節)。

如果 pauseOnConnect 設置為 true ,則與每個傳入連接關聯的套接字將暫停,並且不會從其句柄中讀取任何數據。這允許在進程之間傳遞連接,而原始進程不會讀取任何數據。要開始從暫停的套接字讀取數據,請調用 socket.resume()

服務器可以是 TCP 服務器或 IPC 服務器,具體取決於它的 listen() 目標。

下麵是一個 TCP 回顯服務器的示例,它偵聽端口 8124 上的連接:

const net = require('node:net');
const server = net.createServer((c) => {
  // 'connection' listener.
  console.log('client connected');
  c.on('end', () => {
    console.log('client disconnected');
  });
  c.write('hello\r\n');
  c.pipe(c);
});
server.on('error', (err) => {
  throw err;
});
server.listen(8124, () => {
  console.log('server bound');
});

使用 telnet 對此進行測試:

$ telnet localhost 8124

監聽套接字 /tmp/echo.sock

server.listen('/tmp/echo.sock', () => {
  console.log('server bound');
});

使用 nc 連接到 Unix 域套接字服務器:

$ nc -U /tmp/echo.sock

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 net.createServer([options][, connectionListener])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。