options
{Object}allowHalfOpen
{boolean} 表明是否允许半开的 TCP 连接。默认值:false
。pauseOnConnect
{boolean} 表明是否应在传入连接上暂停套接字。默认值:false
。
connectionListener
{Function} 自动设置为 ['connection'
] 事件的监听器。- 返回: {net.Server}
创建一个新的 TCP 或 [IPC] 服务器。
如果 allowHalfOpen
被设置为 true
,则当套接字的另一端发送 FIN 数据包时,服务器将仅在 [socket.end()
] 被显式调用发回 FIN 数据包,直到此时连接为半封闭状态(不可读但仍然可写)。
有关详细信息,参见 ['end'
] 事件和 [RFC 1122][half-closed](第 4.2.2.13 节)。
如果 pauseOnConnect
被设置为 true
,则与每个传入连接关联的套接字会被暂停,并且不会从其句柄读取任何数据。
这允许在进程之间传递连接,而原始进程不会读取任何数据。
要从暂停的套接字开始读取数据,则调用 [socket.resume()
]。
服务器可以是一个 TCP 服务器或 [IPC] 服务器,这取决于 [listen()
][server.listen()
] 监听什么。
以下是一个 TCP 回声服务器的示例,在 8124 端口上监听连接:
const net = require('net');
const server = net.createServer((c) => {
// 'connection' 监听器。
console.log('客户端已连接');
c.on('end', () => {
console.log('客户端已断开连接');
});
c.write('你好\r\n');
c.pipe(c);
});
server.on('error', (err) => {
throw err;
});
server.listen(8124, () => {
console.log('服务器已启动');
});
使用 telnet
测试:
$ telnet localhost 8124
要想在 /tmp/echo.sock
上监听:
server.listen('/tmp/echo.sock', () => {
console.log('服务器已启动');
});
使用 nc
连接到 Unix 域套接字服务器:
$ nc -U /tmp/echo.sock