相关疑难解决方法(0)

设置套接字操作的超时

当我创建一个套接字时:

Socket socket = new Socket(ipAddress, port);
Run Code Online (Sandbox Code Playgroud)

它会引发异常,这是正常的,因为IP地址不可用.(测试变量where String ipAddress = "192.168.0.3"int port = 300.)

问题是:如何将其设置为该套接字的超时?

当我创建套接字时,如何在UnknownHostException获得套接字并使套接字超时之前减少时间?

java sockets

83
推荐指数
5
解决办法
17万
查看次数

setSoTimeout的功能是什么以及它如何工作?

我正试图自己学习Socket.关注Oracle网站上的文字我有点困惑.我对此有一些疑问.提前感谢任何明确的解释.

setSoTimeout

public void setSoTimeout(int timeout)抛出SocketException

使用指定的超时启用/禁用SO_TIMEOUT,以毫秒为单位.如果将此选项设置为非零超时,read()InputStream与此Socket关联的调用将仅阻止这段时间.如果超时到期,java.net.SocketTimeoutException则会引发a,尽管Socket仍然有效.必须在进入阻止操作之前启用该选项才能生效.超时必须> 0.超时为零被解释为无限超时.

  1. 什么是SO_TIMEOUT?
  2. 套接字是连接的端点.如果我说

    mySocket.setSoTimeout(2000);
    
    Run Code Online (Sandbox Code Playgroud)

    这是否意味着我阻止从服务器/客户端读取此套接字的任何输入2000毫秒,在此之后套接字已准备好读取数据?

  3. 超时到期是什么意思?

  4. 在阻止操作之前必须启用哪个选项?

  5. 无限超时意味着套接字不再读取?

java connection networking

45
推荐指数
3
解决办法
10万
查看次数

标签 统计

java ×2

connection ×1

networking ×1

sockets ×1