你光有try catch,但实际并未对产生的网络异常进行处理,然后继续循环,那自然是无限异常下去了。只要在catch到异常后进行相应处理即可,比如关闭连接,然后退出。在服务端,客户端都加上这个处理,比如在客户端加,如下
public void run(){
while (true)
{
User u = new User();
usetName("1");
ObjectOutputStream oos;
try
{
oos = new ObjectOutputStream(sgetOutputStream());
ooswriteObject(u);
}
catch (Exception e)
{
// TODO Auto-generated catch block
eprintStackTrace();
//注意,这边会看到显示的是true,因为对方并没有调用close来关闭连接,而是直接终止程序
Systemoutprintln(sisConnected());
if (s != null)
{
try
{
sclose();
s = null;
}
catch (Exception ex)
{
exprintStackTrace();
}
Systemoutprintln("远程连接异常,关闭连接");
return;
}
}
}
}
注:
你的这种情况即不能用u=oisreadObject())!=null来判断,也不能用sisConnected&&!sisColse()来判断,因为你是直接终止服务端或者客户端的运行,而不是先close连接,再终止程序。
1)如果是宽带本身的问题,首先直接联接宽带网线测试,如果是宽带的问题,联系宽带客服解决。
2)如果是路由器的问题,如果原来可以用,暂时不能用了,我自己的实践是一个是断掉路由器的电源在插上,等会看看。在有就是恢复出厂设置,从新严格按说明书设置就可以用了,自己不懂,不建议自己随意设置(这是在物理连接正确的前提下,有时是路由器寻IP地址慢或失败引起的,并不是说路由器坏了)。
如果总是不能解决,建议给路由器的客服打电话,他们有电话在线指导,我遇到自己不能解决的问题,咨询他们给的建议是很有用的,他们会针对你的设置或 *** 作给出正确建议的。
3)如果关闭了无线开关开启就是了,如果是用软件连接的无线,软件不好用又经常出问题是很正常的,没有更好的方法,用路由器吧。另外就是网卡驱动没有或不合适引起的,网线接口或网线是不是有问题等。
4)如果是系统问题引起的,建议还原系统或重装。
使用系统自带的系统还原的方法:
系统自带的系统还原:“开始”/“程序”/“附件”/“系统工具”/“系统还原”,点选“恢复我的计算机到一个较早的时间”,按下一步,你会看到日期页面有深色的日期,那就是还原点,你选择后,点击下一步还原(Win7810还原系统,右击计算机选属性,在右侧选系统保护,系统还原,按步骤做就是了,如果有还原软件,也可以用软件还原系统)。
5)有问题请您追问我。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)