请问如何解决服务器socket与客户端建立长连接的问题

samsam28 2003-04-15 10:12:00
请问如何解决服务器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与客户端建立长连接的问题
请专家高手指教,谢谢
...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidBone 2003-04-24
  • 打赏
  • 举报
回复
ding
DavidBone 2003-04-19
  • 打赏
  • 举报
回复
up
xcopy 2003-04-15
  • 打赏
  • 举报
回复
try
{in.readInt();}
catch(java.io.IOException e)
{

serverSocket.close();
}
ppcat 2003-04-15
  • 打赏
  • 举报
回复
sorry,没看到第一段话。
ppcat 2003-04-15
  • 打赏
  • 举报
回复
开一个线程,由线程管理和客户端的交互。
ServerSocket serverSocket = null;
serverSocket = new ServerSocket();
while(true)
{

Socket clientSocket = serverSocket.accept();
managerThread mThread=new managerThread(clientSocket);
mThread.start();
}
serverSocket.close();
...........

class managerThread extends java.lang.Thread
{
Socket m_socket=null;
DataInputStream in =null;
managerThread(Socket clientSocket)
{
super();
m_socket=clientSocket;
}
public void run()
{
in =new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
int len=in.readInt();
..................

}
}

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧