gpt4 book ai didi

java - 为什么使用 Socket.setSoTimeout() 不起作用?

转载 作者:可可西里 更新时间:2023-11-01 02:51:26 24 4
gpt4 key购买 nike

此代码 fragment 来 self 在 Android java 中制作的 TCP 辅助函数:

            socket.setSoTimeout(2000);
InputStream inStream = socket.getInputStream();
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),
true);

out.println(message);

BufferedReader input = new BufferedReader(new InputStreamReader(inStream));

String tcpResult = "";

if(lastCallMillis >= System.currentTimeMillis() - 100)
Thread.sleep(100);

tcpResult = input.readLine();

当第一行出现时,带有“setSoTimeout”的那一行,该方法失败并出现异常。当我不设置超时时,它可以正常工作。

嗯..几乎我不得不插入这部分,因为如果连续快速使用套接字,它就会失败:

            if(lastCallMillis >= System.currentTimeMillis() - 100)
Thread.sleep(100);

无论如何,我是不是对使用 java 套接字有什么误解,还是它的支持太糟糕了?

最佳答案

如果您不希望镜头读取超时,请不要设置较短的读取超时。将 sleep 添加到网络代码永远不会解决任何问题。这简直就是浪费时间。您应该做的是将 sleep 时间添加到超时。但即使是 2.1 秒对于读取超时来说也短得可笑。尝试十个或三十个。

关于java - 为什么使用 Socket.setSoTimeout() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34207623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com