Java_Java_net_PlainSocketImpl_socketSetOption
在open-jdk-8中: 此函数:Java_Java_net_PlainSocketImpl_socketSetOption:Java_Java_net_PlainSocketImpl_socketSetOption,java,sockets,java-native-interface,java-8,openjdk,Java,Sockets,Java Native Interface,Java 8,Openjdk,在open-jdk-8中: 此函数:Java_Java_net_PlainSocketImpl_socketSetOption: /*
/*
* SO_TIMEOUT is a no-op on Solaris/Linux
*/
if (cmd == java_net_SocketOptions_SO_TIMEOUT) {
return;
}
文件:openjdk7/jdk/src/solaris/native/java/net/PlainSocketImpl.c
这是否意味着,在linux上,SO_超时选项将被忽略
我很抱歉找不到linux的jin。但是solaris的代码似乎也适用于linux。不,这只是意味着它没有作为套接字选项实现。有些平台不支持它。在那些平台上使用
select()
或friends。不,这只是意味着它没有作为套接字选项实现。有些平台不支持它。在这些平台上使用select()
或friends。solaris文件夹中的源代码也用于Linux
SO\u TIMEOUT
在Java\u Java\u net\u PlainSocketImpl\u socketSetOption0
中被忽略。但是调用AbstractPlainSocketImpl.setOption
时,timeout
保留为字段:
case SO_TIMEOUT:
if (val == null || (!(val instanceof Integer)))
throw new SocketException("Bad parameter for SO_TIMEOUT");
int tmp = ((Integer) val).intValue();
if (tmp < 0)
throw new IllegalArgumentException("timeout < 0");
// Saved for later use
timeout = tmp;
break;
solaris文件夹中的源代码也用于Linux
SO\u TIMEOUT
在Java\u Java\u net\u PlainSocketImpl\u socketSetOption0
中被忽略。但是调用AbstractPlainSocketImpl.setOption
时,timeout
保留为字段:
case SO_TIMEOUT:
if (val == null || (!(val instanceof Integer)))
throw new SocketException("Bad parameter for SO_TIMEOUT");
int tmp = ((Integer) val).intValue();
if (tmp < 0)
throw new IllegalArgumentException("timeout < 0");
// Saved for later use
timeout = tmp;
break;
代码似乎就是这么做的?你有理由怀疑情况并非如此吗?代码似乎就是这样做的?你有理由怀疑事实并非如此吗?