要回答您的第一个问题:如果可以在本机代码中重用Java的套接字,可以,但是我不建议这样做(您将自己绑定到特定实现/版本的内部);但是,如果您确实必须这样做:使用反射访问java.net.SocketImpl上的java.io.FileDescriptor,然后使用sun.misc。JavaIOFileDescriptorAccess的get方法获取本机套接字描述符。签出DualStackPlainSocketImpl.java)
回答您的第二个问题:在Windows上查找默认接口的Java算法是什么?在net_util_md.c中检出getDefaultIPv6Interface方法(不要让v6欺骗您-
我相信它也用于v4)。
我建议您从C(JNI)代码或Java代码(最好是从Java代码)打开并使用套接字,因为您会发现最好在管理套接字的代码中处理清理和错误处理。在Java中打开套接字并从C(JNI)传递字节缓冲区的想法是完全明智的,并且在合理的缓冲区大小和JNI代码中的正确释放方面,您不会发现堆有任何问题。
想想Java应用程序服务器可以毫不费力地处理大量数据。



