繁体   English   中英

什么是Java的.Net Socket.Handle等效项

[英]What is .Net Socket.Handle equivalent for java

在Java中,有任何等效于c#功能的功能。

Socket.Handle

https://msdn.microsoft.com/zh-CN/library/system.net.sockets.socket.handle(v=vs.110).aspx

我已经在Internet上搜索了,还检查了java.net.Socket的属性,但无法提取类似的内容。 任何信息表示赞赏。

非常感谢。

如果我理解正确,则基本上需要socket.getImpl().getFileDescriptor().fd 这些方法/字段都不是公共的,将反射作为唯一选择:

static int getHandle(Socket socket) throws ReflectiveOperationException {
    Method getImpl = Socket.class.getDeclaredMethod("getImpl");
    getImpl.setAccessible(true);
    SocketImpl impl = (SocketImpl) getImpl.invoke(socket);
    Method getFileDescriptor = SocketImpl.class.getDeclaredMethod("getFileDescriptor");
    getFileDescriptor.setAccessible(true);
    FileDescriptor fileDescriptor = (FileDescriptor) getFileDescriptor.invoke(impl);
    Field fd = FileDescriptor.class.getDeclaredField("fd");
    fd.setAccessible(true);
    return (int) fd.get(fileDescriptor);
}

从Java 9开始,它带有许多警告:

警告:发生了非法的反射访问操作
...
警告:所有非法访问操作将在以后的版本中被拒绝

结论是,(普通)Java可能不是满足此要求的正确工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM