首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java_java_net_PlainSocketImpl_socketSetOption

Java_java_net_PlainSocketImpl_socketSetOption
EN

Stack Overflow用户
提问于 2015-12-31 20:34:26
回答 2查看 111关注 0票数 1

在公开-jdk-8:

这个jin函数: Java_java_net_PlainSocketImpl_socketSetOption:

代码语言:javascript
复制
/*                                                                                                                                                                                            
     * 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上,setOption of SO_TIMEOUT会被忽略?

我找不到linux的jin。但是solaris的代码似乎也适用于linux。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-31 23:08:02

不,它只是意味着它不是作为套接字实现的。有些平台不支持它。在这些平台上使用select()或朋友。

票数 0
EN

Stack Overflow用户

发布于 2020-05-06 12:47:22

solaris文件夹中的源代码也用于Linux。

SO_TIMEOUTJava_java_net_PlainSocketImpl_socketSetOption0中被忽略。但是,当调用timeout时,AbstractPlainSocketImpl.setOption被保留为字段:

代码语言:javascript
复制
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;

timeoutSocketInputStream中进行读取时使用

代码语言:javascript
复制
public int read(byte b[], int off, int length) throws IOException {
    return read(b, off, length, impl.getTimeout());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34551398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档