代码之家  ›  专栏  ›  技术社区  ›  Harold L

我能从文件描述符号中得到一个Java套接字吗?

  •  0
  • Harold L  · 技术社区  · 15 年前

    当一个程序通过fastcgi启动时,它被执行时已经打开了一个套接字来与Web服务器对话。套接字的文件描述符号被传递给程序,但如何将其转换成Java中有用的东西,例如套接字实例?

    我的主机服务使用mod_fastcgi作为apache httpd。他们不允许我配置一个外部服务器,在那里我提供一个主机:端口,通过fastcgiexternalserver将请求转发到。

    2 回复  |  直到 15 年前
        1
  •  1
  •   ZZ Coder    15 年前

    你不能合法地这么做。但是,你可以这样做(不要在家里尝试)。你可以阅读 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);
    
        2
  •  1
  •   Bombe    15 年前

    你想要什么 Socket 为了什么?套接字中唯一有用的方法是 getInputStream getOutputStream 但是,如果您以CGI的形式运行,那么您已经拥有了:它们被称为 System.in System.out . :)