学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

java EOFException 和 发送对象问题

java EOFException 和 发送对象问题

Question One


求助End Of File 异常..........

--------------
我在写Socket的时候遇到的问题,我想我也知道问题在什么地方
可是就是没有办法解决.........

客户端在使用Socket连接成功后,使用DataOutputStream发送一个标记字符串
里面记录用户的基本信息,和本条信息的属性。都是一些字符串。

如果服务端不加处理直接使用DataInputStream的readUTF()方法打印出结果的话
没有任何问题。
DataInputStream getClient = DataInputStream(socket.getInputStream());
读取的方法放在一个线程的run()里的while(true)里面

同样客户端也有同样的接受线程。

---------------
问题是我在服务端线程的run()里面先String getInfo = getClient.readUTF();
然后把getInfo传进一个判断信息属性的方法里面,如果判断通过
执行while(true){
JTextArea Info_area前面已经定义完成
Info_area.append(getClient.ReadUTF());此处总是报出EOFException}
一直等待客户端的信息并打印出来
我的理解是readUTF()有点类似于ResultSet的next()和Iterator的next()方法
第二次调用getClient.ReadUTF())的时候已经开始读取下一条DatainputStream的信息,
而此时并没有下一条流所以会读到文件末尾。

------------------------
可是问题是我在while(true)里面加上
if(getClient!=null)的判断,却没有任何作用
同时客户端就会报出Socket is closed的异常

请问在我的程序框架下面应该如何去该。


====================================================================================
Question Two
我想发同一个连接里面既发送String又发送Object
应该在接受段如何分辨

因为我发现Data流和Object都继承与InputSdtream
所以我想应该有判断流类型的方法,既可以让对方知道收到的流是
数据还是对象



====================

希望给予比较详细的解答
本人不胜感激

TOP

string 是常量..最好用stringbuffer
学习需要安静。。海盗要重新来过。。

TOP

问题一已经解决
实践表明readUTF()方法在流内容为空时处于阻塞状态.
EOFException的原因是客户端判断条件错误,单向关闭了Socket

问题二还没有解决
等待中............

TOP

发新话题