Node.js“new Socket”是否创建了一个Unix文件套接字?

时间:2011-09-23 14:37:09

标签: file sockets unix node.js file-descriptor

过去几周我一直在使用node.js,我需要实现FAST-CGI协议。 问题是当我创建一个UNIX套接字(通过“new Socket”)时,我需要获取文件名或文件描述符。但是socket.fd为null(默认参数)。

我的问题是:“new Socket”是否会创建一个操作系统套接字目标文件,如果是,我该如何获取套接字文件描述符或文件名?

我不确定这是否应该如何创建一个Socket,但实际情况如下:
节点:

var net = require(net)
var socket = new net.Socket()
console.log(socket);

{
 bufferSize: 0,
 fd:null,
 type: null,
 allowHalfOpen: false,
 _writeImpl: [Function],
 _readImpl: [Function],
 _shutdownImpl: [Function]
}

1 个答案:

答案 0 :(得分:7)

当你连接套接字时,socket.fd不是null,至少不是我的情况,所以请提供一个示例。

请注意,您还可以指定现有文件描述符at socket creation

修改

var net = require('net'),
    fs = require('fs'),
    sock;

// Create socket file
fs.open('/tmp/node.test.sock', 'w+', function(err, fdesc){
    if (err || !fdesc) {
        throw 'Error: ' + (err || 'No fdesc');
    }

    // Create socket
    sock = new net.Socket({ fd : fdesc });
    console.log(sock);
});