我用socket分别创建了一个服务器和一个客户端。
当服务器程序运行时,客户端和服务器发送接收数据是OK的。
但是,如果服务器程序关闭以后,客户端仍然发送请求的话,会抛出一个IOException。但这个时间间隔很久,要三到四分钟才会抛出这个异常的。刚开始还以为是死机了呢!
我想在客户端做一个处理:如果服务器未开,要弹出一个提示框,然后结束当前程序。
请问怎么实现?
附创建客户端的部分代码:
Socket
socket = new Socket("10.13.81.3",5000);
sendMsg(str);//这个是给服务器发送数据的接口
readMsg();//这个是服务器收到后
立即会发送数据给客户端,由客户端在这里接收数据
我就想在创建socket之后,判断是否connect,没有的话就弹出对话框,但是不成功.
解决方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
//global variables public Socket socket = null ;
private
InetSocketAddress isa = null ;
private
static final String HOST = "10.13.81.26" ;
private
static final String PORT = 5000 ;
private
static final String TIMEOUT = 100 ;
///connect to server try { socket = new
Socket();
isa = new
InetSocketAddress(HOST,PORT);
socket.connect(isa,TIMEOUT);
} catch (IOException e)
{ e.printStackTrace();
} finnally { this .disconnectToServer();
} ///disconnect to server try { if (socket != null )
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
} |
之前链接socket直接用:
Socket
socket = new Socket("10.13.81.26",5000);
socket.setTimeout(100);
这样,如果出现服务器端未开启时,即使设置了100ms超时时间,也会过很长时间才会捕捉到IOException
现在先定义isa,通过isa跟socket链接
可以解决上面的问题