java - 我可以从文件描述符编号获取 Java 套接字吗?

标签 java apache fastcgi mod-fastcgi

当程序通过 FastCGI 启动时,它会使用已打开的套接字来与 Web 服务器通信。套接字的文件描述符编号被传递给程序,但是如何将其转换为 Java 中有用的东西,例如 Socket 实例?

我的托管服务使用 Apache httpd 的 mod_fastcgi。他们不允许我配置外部服务器,在其中我提供主机:端口以通过 FastCgiExternalServer 将请求转发到。

最佳答案

你不能合法地这样做。但是,您可以这样做(不要在家尝试)。您可以从 is 读取数据并写入 os

    Class<FileDescriptor> clazz = FileDescriptor.class;

    Constructor<FileDescriptor> c;
    try {
        c = clazz.getDeclaredConstructor(new Class[] { Integer.TYPE });
    } catch (SecurityException e) {
        e.printStackTrace();
        return;
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
        return;
    }

    c.setAccessible(true);
    FileDescriptor fd;
    try {
        fd = c.newInstance(new Integer(socket));
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
        return;
    } catch (InstantiationException e) {
        e.printStackTrace();
        return;
    } catch (IllegalAccessException e) {
        e.printStackTrace();
        return;
    } catch (InvocationTargetException e) {
        e.printStackTrace();
        return;
    }

    FileOutputStream os = new FileOutputStream(fd);
            FileInputStream is = new FileInputStream(fd);

关于java - 我可以从文件描述符编号获取 Java 套接字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1243546/

相关文章:

java - 在java中获取二叉搜索树的根

java - 了解 Java 中的静态变量初始化

html - 脚本输出结束 - CGI/HTML

apache - 主机名在另一个 Tomcat 服务器上不工作

apache - .htaccess DirectoryIndex不起作用

c++ - 如何调整非托管 C++ DLL 以供 Ruby 使用

performance - 如何配置 IIS-10 和 FastCGI 以实现高并发?

java - 二进制 XML 文件行 #2 : Error inflating class

java - 将BitSet转换为int [duplicate]

sockets - FastCGI with protocol = IIS 7 上的 Tcp