socket 连接超时处理 java

在进行Java Socket编程时,遇到当尝试连接到不通的PC端IP和端口时,程序会陷入无限等待的问题。原来,`setSoTimeout(timeout)`设置的是在连接建立后的接收数据超时,并非连接超时。通过在创建`Socket`实例时调用`connect(SocketAddress, timeout)`方法,可以设置连接超时,从而避免长时间等待。参考他人经验,将连接超时设置为0.1秒,当连接无法建立时迅速返回并抛出`ConnectTimeoutException`。" 115425747,8705437,Nginx基础配置与Tomcat+Memcache结合实践,"['Nginx配置', '负载均衡', 'Tomcat部署', '缓存', '服务器管理']
摘要由CSDN通过智能技术生成

之前很少做这种纯的socket编程,最近公司有项目需要跟pc端通信,自己定协议发报文,就写了一个简单的基于java socket的client。

功能差不多了以后,发现一个问题,向pc端发报文时,pc端ip port 不通的情况下,会一直死等,等到天荒地老。这种情况我刚开始以为是代码出现了问题。

之前的代码:

                 Socket socket = null;
                try {
                    socket =new Socket(host,port);//问题出在这里
                     socket.setSoTimeout(timeout);
                 我以为我设置了超时:  socket.setSoTimeout(timeout);,其实这个是响应阻塞超时,是client和服务端建立连接后,等待接收数据的超时时间,真正的连接超时我没有处理。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值