代码之家  ›  专栏  ›  技术社区  ›  ApriOri

将本机Winsock套接字传递到Java套接字

  •  3
  • ApriOri  · 技术社区  · 14 年前

    java.net.Socket 此Winsock应用程序已负责连接套接字。

    如何显式设置的套接字描述符 ?

    1 回复  |  直到 6 年前
        1
  •  3
  •   ZZ Coder    14 年前

    我在Unix上遇到了这样一个问题,不确定WinSock是否也有同样的机制。

    在我们的例子中,C中的一个程序使用特殊的硬件创建了一个套接字。C程序生成Java程序并将其传递给socket。然后,Java程序从套接字的文件描述符构造输入/输出流,这样它就可以像普通套接字一样对其进行读/写操作。

    Java代码片段在这里,

        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);