之前很少做这种纯的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和服务端建立连接后,等待接收数据的超时时间,真正的连接超时我没有处理。