鱼C论坛

 找回密码
 立即注册
查看: 1042|回复: 2

[已解决]关于TCP长时间连接不上又不报错的问题

[复制链接]
发表于 2023-1-29 21:11:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近用安卓开发了一点小东西,遇到了一个问题:

出问题的是一个函数,功能为建立一个Socket并连接到服务器。

当服务器开启时,代码可以正常运行,没问题。
当服务器关闭时,代码会在第五行client=new Socket(serverip, Integer.parseInt(port));语句卡住,无法继续执行。
我理想的情况情况是:若链接不到服务器,就抛出某一个错误,然后程序就得知出现了"链接不到服务器的错误",为用户弹出一个提示框。
public Socket newClient(String host, String port) throws ConnectException,UnknownHostException, IOException {
        Socket client = null;
        try{
            InetAddress serverip= InetAddress.getByName(host);
            Log.d("at TCP", "client go");
            client=new Socket(serverip, Integer.parseInt(port));
            Log.d("at TCP", "client ok");
        }catch(ConnectException e){
            Log.e("at TCP CONNECTexception", e.getMessage());
        }catch(UnknownHostException e){
            Log.e("at TCP",e.getMessage());
        }catch(IOException e){
            Log.e("at TCP",e.getMessage());
        }
        return client;
    }
最佳答案
2023-1-29 22:00:16
对 Java 不熟,不清楚这方面的最佳实践是什么样的
查了一下文档,文档没说明这样在构造函数直接进行连接建立的 Socket 连接超时时间是多少
同时也注意到,此构造函数和不带 timeout 参数的 connect 方法均不会抛出 SocketTimeoutException 异常
推测可能能通过构造未连接的 Socket,调用带 timeout 参数的 connect 方法,捕获上述异常来发现超时并给出提示来解决此问题,供您参考
https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html#connect(java.net.SocketAddress,int)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-29 22:00:16 | 显示全部楼层    本楼为最佳答案   
对 Java 不熟,不清楚这方面的最佳实践是什么样的
查了一下文档,文档没说明这样在构造函数直接进行连接建立的 Socket 连接超时时间是多少
同时也注意到,此构造函数和不带 timeout 参数的 connect 方法均不会抛出 SocketTimeoutException 异常
推测可能能通过构造未连接的 Socket,调用带 timeout 参数的 connect 方法,捕获上述异常来发现超时并给出提示来解决此问题,供您参考
https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html#connect(java.net.SocketAddress,int)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-30 14:11:56 | 显示全部楼层
你可以自定义异常,计算连接服务器时间,如果时间超过规定的时长,那么就抛出服务器未响应之类的异常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-31 02:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表