请问如何解决服务器socket与客户端建立长连接的问题
请问如何解决服务器socket与客户端建立长连接的问题
程序运行完全没有问题,但我还是有些麻烦,主要是客户端跟我
做的是长连接,而不是短连接,另外不是多线程的,我的程序只
允许一个连接
一
如果是短连接的话,对方主动关闭连接,如果有需要会再次连接
上来,这样做非常好处理,我自己把serversocket关闭后可以再
次accept
脚本如下:
ServerSocket serverSocket = null;
Socket clientSocket =null;
DataInputStream in =null;
serverSocket = new ServerSocket();
while(true)
{
clientSocket = serverSocket.accept();
in =new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
int len=in.readInt();
..................
serverSocket.close();
}
二
如果是长连接,即客户连接上来后就不断开,始终连住收发
数据,这对于企业内部的后台应用来讲很常见,那么我在
while循环里就不能关闭serversocket了,而且也不能new
一个IO,但是这样的脚本如果对方因为网络问题或者系统
本身问题断开连接而不是主动发起一个close操作,而我这
边并不知道对方断开,还在死等着对方的数据(read),最上
也讲过,我的程序不是多线程,这样就会造成我的程序在死
等他的数据而他还发不过来
脚本如下
ServerSocket serverSocket = null;
Socket clientSocket =null;
DataInputStream in =null;
serverSocket = new ServerSocket();
clientSocket = serverSocket.accept();
in =new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
while(true)
{
int len=in.readInt();
..................
}
....
serverSocket.close();
请问如何解决服务器socket与客户端建立长连接的问题
请专家高手指教,谢谢