当前位置: 代码迷 >> Java相关 >> java EOFException 和 发送对象问题
  详细解决方案

java EOFException 和 发送对象问题

热度:773   发布时间:2008-05-01 17:27:03.0
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
所以我想应该有判断流类型的方法,既可以让对方知道收到的流是
数据还是对象



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

希望给予比较详细的解答
本人不胜感激
搜索更多相关的解决方案: java  EOFException  对象  Socket  属性  

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

问题二还没有解决
等待中............
----------------解决方案--------------------------------------------------------
  相关解决方案