java Socket问题:服务器端等待客户端的请求,但是客户端连上后再关闭,服务器就会出异常,怎么解决?

在服务器端使用

InputStreamReader stream = new InputStreamReader(socket.getInputStream());

BufferedReader reader = new BufferedReader(stream);

while((true){
String in = reader.readLine();
}
来持续读取客户端的发送的消息,但是客户端关闭就出异常了,要怎么解决呢?

两种办法,1)客户端关闭前 先往服务端写一段特定的信息,服务端捕捉后就把该连接关闭。 这样关闭客户端也不会出错。2)用多线程来处理:
1、Server创建 Socket s ; ServerSocket ss 并监听端口 run = true ; while(run) { s = ss.acept();}
2、Client 连接 Server , Server 接受 并启动线程类 ServerThread 处理 客户端的连接 ,然后继续等待下一个客户端的连接。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-09
现实中,肯定不能保证客户端不去关闭,有异常不要紧,要紧的是去处理异常,而不要因为异常导致整个软件崩溃。

try
{

nputStreamReader stream = new InputStreamReader(socket.getInputStream());

BufferedReader reader = new BufferedReader(stream);

while((true){
String in = reader.readLine();
}

}
catch(IOException e)
{
//客户端断开了
}

软件设计思路,参考一楼的回答.追问

关键是不知道如何去处理这个异常阿,你知道吗?

追答

检查到客户端已断开,接下来你打算怎么处理?

追问

关闭线程啊

追答

一个线程:

class abc extends Thead
{
public void run()
{
//run()这里执行完,该线程就自动退出了。
}
}

本回答被提问者和网友采纳
相似回答