最近作程序,出现一种异常我不太明白:
while (!stop) {
String str = dis.readUTF();//这一行
if (str != null) {
......
}
}
这是客户端读信息的代码,服务端用dos.writeUTF()方法写信息;客户端第一次读信息没有问题,可是第二次执行的时候,一运行到标注的行,就会抛IOException异常,用e.getMessage方法看了一下,居然是空的。查了一下api文档:the error message string of this Throwable object if it was created with an error message string; or null if it was created with no error message.我不太明白,既然no error message,为什么还会抛异常,还是null。
------解决方法--------------------------------------------------------
没有读出内容,就是null噻,
检查你服务端发送过程是不是和客户端读取过程相对.
------解决方法--------------------------------------------------------
可以仔细的分析一下,看看哪里出错了,要相信自己有这个实力,`~~~~
这样对你以后的工作有很大的帮助
------解决方法--------------------------------------------------------
因为 dis.readUTF() 这个方法是一个阻塞性的方法.在每一次读完后它还是会在那里等着接收数据. 也就是说每一次你从服务器端发数据,当发完一个数据后,就不再发数据了.可客户端那边还是在等着你的数据,而且还在读取数据.所以读到的就是空值了. 不知道我说的对不对.请大家指教.
------解决方法--------------------------------------------------------
看看你的服务器代码吧,发送,接收就放在一个循环里的