服务器端如果不发送就让它处于长期接收状态(不设置setSoTimeout或设为0,然后运行
socket.receive();)。
这样客户端一断就会抛出异常的。
socket.receive();)。
这样客户端一断就会抛出异常的。
解决方案 »
- HttpURLConnection如何添加请求头?
- 求助!!关于JCreator Pro的问题!
- java 与数据库的问题
- “Class类型”参数的方法调用问题(SessionSingletonBase.getInstance(final Class type))
- iis+tomcat5.0显示有点问题
- 如果在一个程序中同时响应多个事件?
- 请各位帮忙看一看这段程序?
- 将flash打包到war中
- JBuilder下编译,老有问题!!!
- 谁遇到过OutOfMemory错误?
- Eclipse 高人解答---Visual Editor 为何不像介绍的那样出现可编辑窗口?
- 请高手帮我解决一下JFielChooser的错误 送分哦!!!
不过这个灵活性不如上面的
BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str;
while ((str = rd.readLine()) != null) {
process(str);
}
rd.close();
} catch (IOException e) {
//客户断线处理
} try {
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
wr.write("aString");
wr.flush();
} catch (IOException e) {
//客户断线处理
}
(发生异常)Exception{
//-->发送错误给服务嚣(另一线程)
}服务嚣:
在启动时不断在某端口监听(在另一线程Thread)
服务器开辟一个监听线程,如果一段时间没有受到客户端的消息,就判定其死掉
具体可以用timer实现
{
ServerSocket server = new ServerSocket(listenPort);
Socket incomingConnection = null;
while (true)
{
incomingConnection = server.accept();
}
}
catch (BindException e)
{
System.out.println("Unable to bind to port " + listenPort);
}
catch (IOException e)
{
System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);
}
这样可以么
会断线了有例外吗?有的话,就是这个问题。
虽然TCP是通过返回判断连接是否断开了的。 但是,这个不是底层,更何况,底层已经被封装了。
当返回Socket后,就跟飞狐说的一样了。
2、客户端没有发送数据过来:read将阻塞,或返回0,和客户断开java里根本是不同处理。
3、我是说断开了我如何知道? 一般客户端断开,肯定在服务端有异常抛出的。不必做啥判断的,直接处理。
4、你写个程序试一下就知道了。
算了。 谢谢各位好意!