问题标签 [socket-timeout-exception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1713 浏览

java - Java中的多个线程不尊重套接字超时?

我有一个产生 4 个线程的 java 程序。在每个线程中,我有多个套接字超时。但是,似乎这些超时不受尊重,即该readLine()功能可能会阻塞更长的时间。

我想要以下行为:如果我将套接字超时设置为 300 毫秒,那么我希望readLine()函数在调用(即底层选择调用)后的 300 毫秒内返回readLine(),无论如何。我知道操作系统调度程序会在进行处理器共享时使线程进入睡眠状态,但是在 Java 中有什么方法可以强制线程始终被唤醒以确保这种行为?还是在进行多线程编程时这不是正确的思考方式?

理想情况下,由于我产生了 4 个线程并在 6 核机器上运行,每个线程应该能够获得自己的 CPU 并并行运行,并尊重选择超时......但这可能太期待了...... .

PS:我实际上确实使用 Thread.interrupt() 来确保我的每个线程在一定时间内退出(我检查主线程中经过的时间,如果太长则中断子线程)。在我的每个线程中,我连接到(不同的)服务器,发出请求,然后等待响应。不知道多久会有反应。所以我继续调用该readLine()方法,直到它超时SocketTimeoutException。我强制执行 300 毫秒的超时,因为我希望服务器在这段时间内开始响应。我要强制执行此超时的原因是服务器以广播方式运行,并将单个客户端对请求的响应发送到所有客户端。因此,如果我没有超时,我将继续获取数据以响应其他一些客户的请求。

0 投票
2 回答
2307 浏览

java - 如何调试 SocketTimeoutException?

java.net.SocketTimeoutException当客户端 A 连接到服务器 B 时,我们在服务器 B 上得到了一个。不知道为什么。客户端正在向服务器发送数据,然后服务器抛出此异常。如何解决这个问题?

请注意,目前这只发生过一次。不确定这是否可复制。尝试重新设置测试..

0 投票
1 回答
17081 浏览

java - 数据报套接字上的 setSotimeout

服务器就像一个回声服务器。客户端向服务器发送 10 个数据包(间隔 1 秒)

当客户端从服务器接收到数据包时,有时数据包会丢失。

所以客户端必须等待最多一秒钟才能让数据包到达。如果数据包在 1 秒内未到达,则客户端应继续发送其他数据包。

我将如何使用 .setSoTimeout 来实现这一目标?

代码:

}

0 投票
2 回答
716 浏览

java - SocketTimeoutException 在应用程序运行一段时间后不停地发生,但通过重新启动它会立即解决

我有一个爬虫 Java 应用程序,它应该连接到一些 HTTP 服务器,下载其页面的 HTML 内容,然后转到其他 HTTP 服务器。对于这个任务,我使用了 Apache HTTP 库。

在运行的前几个小时,事情似乎运行得相当顺利(有时会抛出一些与连接相关的异常,但这是意料之中的)。然而过了一段时间,我似乎在我发出的每个请求上都收到了 SocketTimeoutException。HttpClient 类的“执行”方法不会发生异常,而是当我尝试获取实体的内容(我从 HttpResponse 对象检索),或者当我尝试将该内容写入文件时。

然后,如果我停止应用程序并重新启动它,事情似乎又可以正常工作了——即使它从停止的地方开始,这意味着它正在与我在尝试交互时收到 SocketTimeoutException 的同一台服务器进行交互与之前。

我尝试寻找可能缺少的各种可能的清理方法,并且在使用这个库时可能是必不可少的,但找不到任何东西。

任何帮助将不胜感激。谢谢。

0 投票
1 回答
487 浏览

java - SocketTimeoutException 使用 URLFetch 到发送通道消息的服务

我们有两个 AppEngine (Java) 应用程序。其中一个使用 URLFetch 到另一个来创建约会。在接收器中,我们添加了一个功能,我们使用 Channel API 查看是否有任何打开的通道并让他们知道新数据。

URLFetch 调用失败并出现 SocketTimeoutException。接收器中的所有代码都已执行(包括通知所有打开的通道),但调用应用程序仍会收到 SocketTimeoutException。当我注释掉频道通知行时,没有错误。

这只发生在已部署的应用程序中,而不是在开发模式下。此外,调用不会接近 URLFetch 允许的 60 秒(甚至旧的 10 秒)超时。

0 投票
1 回答
1715 浏览

android - SocketTimeoutException 等待但未抛出?

我正在编写一个从服务器接收数据的 Android 应用程序。理论上不可能有互联网连接,所以我尝试通过捕捉 SocketTimeoutException 来捕捉这种情况,以显示错误消息和重试屏幕或其他内容。不幸的是,不会抛出这个异常。至少它不会跳入 catch 子句。我究竟做错了什么?

0 投票
1 回答
1344 浏览

osgi - 分布式 OSGi:读取超时

我正在使用分布式 OSGi 和 Zookeeper 构建分布式应用程序。该应用程序应该在 Felix 和 Equinox 上运行。我将我的服务注册为 JAX-WS Web 服务,BundleContext.registerService(...)并使用ServiceTracker<S,T>. 所以所有的服务处理都是由 OSGi 框架完成的。每个服务调用都会进行一些计算,因此在响应调用者之前需要一些时间。

问题是java.net.SocketTimeoutException: Read timed out当服务调用花费超过 60 秒时我会遇到异常。因此,似乎默认超时为 60 秒。有人知道我可以如何配置 OSGi 框架使用的超时吗?

这是完整的堆栈跟踪:

0 投票
2 回答
4934 浏览

android - phonegap:调用 webviewclient 超时错误

我正在尝试调试我的 phonegap 应用程序。当我尝试在我的模拟器上打开我的应用程序时,我收到一条错误消息The connection to the server was unsuccessful. (file:///android_asset/www/index.html)

我应该提到我正在使用 phonegap 构建,所以我没有任何本机代码。奇怪的是我只加载本地资源,所以我不明白为什么我会超时。我的 index.html 看起来像这样:

0 投票
0 回答
821 浏览

java - Android 3 平板电脑上出现意外的 SocketTimeoutException

我有一个应用程序,它使用从 url 读取数据

超时时间为 60000。源每 15 秒返回一次数据,因此应该没有超时。但是在打开 url 连接后 2:19抛出了java.net.SocketException: Connection timed out 。我用Huawei Mediapad 7进行了测试。相同的代码在某些 Android 2 设备、手机和平板电脑上运行良好。

有人已经遇到过这个问题,还是这个设备是特定的?

编辑:(澄清收到数据并且没有真正的超时是原因。)我已经记录了每 15s 收到数据。没有停顿,没有断开的连接。例如,在收到最后一个数据后 4 秒抛出异常。

0 投票
0 回答
2396 浏览

java - httpURLConnection.getOutputStream() 上的 readTimeout?

我有HttpURLConnection一个readTimeout设置为 500 毫秒的测试。根据我的理解,readTimeout等待响应的最大允许时间。但是,当我运行我的应用程序时,会在getOutputStream. Exception显然是由于readTimeout.

为什么readTimeout发生在getOutputStream?我认为getOutputStream仅用于发送数据,因此不应等待任何响应。而且由于它不必等待任何响应,readTimeout因此不会发生。最初,我认为这readTimeout将发生在getInputStream因为它是接收/读取响应的地方。你能解释一下 areadTimeout和是如何connectTimeout工作的吗?

另外,当我在之前和之后放置一个计时器时getOutputStream,调用后我的计时器的值getOutputStream只有200+毫秒。我readTimeout的是 500 毫秒。为什么getOutputStream超时时间早于 my 的 500 毫秒值readTimeout?请注意,我connectTimeout的设置为 0 或无限。