| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1755 人关注过本帖
标题:java EOFException 和 发送对象问题
取消只看楼主 加入收藏
Starlove
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-4-26
收藏
 问题点数:0 回复次数:1 
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 属性 
2008-05-01 17:27
Starlove
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-4-26
收藏
得分:0 
问题一已经解决
实践表明readUTF()方法在流内容为空时处于阻塞状态.
EOFException的原因是客户端判断条件错误,单向关闭了Socket

问题二还没有解决
等待中............
2008-05-02 10:44
快速回复:java EOFException 和 发送对象问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043290 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved