`
xuepengcheng
  • 浏览: 46424 次
  • 性别: Icon_minigender_1
  • 来自: 郴州
社区版块
存档分类
最新评论

菜鸟的EOFException

阅读更多
内部类BlockDataInputStream.的方法peekByte抛出的异常,意思就是到达了文件的末尾,程序却没有正常结束读取文件内容


Client:
  streamToServer.println(userName+";"+strPwd);  //向Server发送name与password;
  String frmServer = (String)streamFromServer;  //Client接收Server返回的信息;
  if(frmServer.equals("Welcome"))
  {
     new ClientInt(userName);   //start the chat screen;
     this.dispose();
  }

Server:
  msg = streamFromClient.readLine();     //接收Client的登录信息
  int ver = verify(msg);                 //验证信息从txt文件中读
  if(ver==1)
  {
     String colon = new String(";");
     int index = ((String)msg).lastIndexOf(colon);
     String userName = (String)msg.substring(0,index);
     if(!(vctrList.indexOf((String)userName)>0))
     {
       streamToClient.writeObject("Welcome");
       streamToClient.flush();
       vctrList.addElement((String)userName);
     }
--------------------------------------------
     else                          //为上过线的用户返回信息
     {
streamToClient.writeObject("Welcome");
streamToClient.flush();
     }
-------------------------------------------
  }


        int verify(String mesg)
{


try{
RandomAccessFile RAS = new RandomAccessFile("UserPwd.txt","r");

System.out.println(RAS.getFilePointer()+" "+RAS.length());

RAS.seek(0);
int i = 0;
String str = "";
while(!((RAS.getFilePointer())==(RAS.length())))  //getFilePointer:返回此文件中的当前偏移量。到此文件开头的偏移量(以字节为单位)
{

str = RAS.readLine();
if(str.equals(mesg))
{

System.out.println(RAS.getFilePointer()+" "+RAS.length());
ctr = 1;
break;
}

}//end of while

RAS.close();

}catch(Exception e){
System.out.println("Connect.java verify(String mesg)");
System.out.println("Connect.java 58 Exception Occurred:"+e);
}

return ctr;

}//end of verify()

解决这问题时花费时间很多,这就是经验的问题。引发这异常的问题点是寻到的并解决,可这问题点触发这异常里的过程却还不是很清楚。当Client发送登录信息时,Server接收并验证在验证函verify()中所使用的是RandoAccesFile类进行读取后流关闭。Hashtable vctrList(用于存贮在线用户)是问题的关键,当Client关闭时Server的vrtrList并没有删除对应用户,所以再次登录检验用户时,server端并没有相应的streamToClient.writeObject(),才引发java.io.EOFException。具本为什么这样我也很迷惑,没有相应的返回信息它会返回上一步再次读取登录信息吗?可文件流有关闭呀,且每次读前我都有从新定位的。看来Socket与线程还要好好读读。
分享到:
评论

相关推荐

    RabbitMq+springboot

    在本文中,我们将深入探讨如何将RabbitMQ与SpringBoot集成,以实现高效的消息队列系统。RabbitMQ是一款开源的消息代理和队列服务器,它使用AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中...

    jetty-io-9.4.43.v20210629-API文档-中英对照版.zip

    赠送jar包:jetty-io-9.4.43.v20210629.jar; 赠送原API文档:jetty-io-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-io-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-io-9.4.43.v20210629....

    java.io.EOFException(解决方案).md

    项目中碰到的,记录一下解决方案

    mysql 异常com.mysql.jdbc.CommunicationsException

    本次异常的具体描述为:“Communications link failure due to underlying exception: **BEGINNESTED EXCEPTION** java.io.EOFException STACK TRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully...

    Nginx + Websocket 实现推送

    Nginx + Websocket 实现推送 , 实现思路 : http://blog.csdn.net/shangmingtao/article/details/76639821 . 代码可以直接线上运行.

    电子商务交易平台信用体系建设研究整理.pdf

    在电子商务领域,信用体系的建设至关重要,因为它直接影响到交易的安全性和消费者的信任度。网络交易平台信用体系,简单来说,就是电商平台在政府引导下,与各方参与者共同建立的一套包含法规、评价标准、组织形式和...

    java异常处理

    - **编译时异常** (`Checked Exception`):这些异常在编译时会被检查,如果方法中可能会抛出此类异常,则必须在方法签名中声明,或者在方法体内通过 try-catch 块处理。 - **运行时异常** (`Runtime Exception`):...

    PdfUtils.java

    解决Could not load font file: C:\Windows\FONTS\mstmc.ttf 对应问题贴https://blog.csdn.net/guozhangjie1992/article/details/103679640

    hessdroid_android

    已经解决了第一次连接报:com.caucho.hessian.client.HessianConnectionException: 500: java.io.EOFException

    Flowable-BPMN操作流程部署启动源码

    Flowable是一款强大的、开源的工作流引擎,它基于BPMN 2.0标准,能够帮助企业或组织实现业务流程自动化。BPMN(Business Process Modeling Notation)是一种图形化表示业务流程的方法,它提供了丰富的符号来描绘各种...

    EOF.zip_EOF Matlab_EOF 分析_EOF分析_eof_matlab eof

    EOF,全称Empirical Orthogonal Functions(经验正交函数),是一种数据分析方法,常用于气象学、海洋学和地球物理学等领域,以降维处理和模式识别复杂数据。在Matlab环境中,EOF分析是一种强大的工具,可以帮助研究...

    EOF.zip_EOF gfortran_EOF分析_eof_eof分析气象

    EOF,全称Empirical Orthogonal Functions(经验正交函数),是一种在气象学、海洋学以及地球物理学等领域广泛应用的数据降维和分析方法。它通过找出数据的主要模式,将高维复杂数据转换为少数几个主成分,从而揭示...

    EOF.zip_EOF Python_EOF方法_eof_eof分解python_python实现eof

    EOF,全称End of File(文件结束符),在编程领域中通常用来表示文件或数据流的末尾。但在本场景中,"EOF"是“经验正交函数”(Empirical Orthogonal Functions)的缩写,这是一个在气象学、海洋学和其他地球科学领域...

    菜鸟的22个经典错误.ppt

    菜鸟之伤(2):while循环中文件结束符EOF的值 在while循环中,文件结束符EOF的值是-1而不是0。因此,while(scanf(…)!=0)常常会因为死循环而造成TLE。老鸟也常常因为不注意这点而犯错误。 菜鸟之伤(3):while...

    Java图片处理ImageIO.read()问题

    在Java编程中,图片处理是一项常见的任务,而`ImageIO`类是Java标准库提供用于读取、写入和操作图像的重要工具。本篇将详细探讨`ImageIO.read()`方法的相关知识点,以及如何解决可能遇到的问题。...

    EOF分析matlab代码

    气象统计EOF的MATLAB程序,可以直接使用,比较容易看懂的

    yarn-v0.23.2.tar.gz

    yarn-v0.23.2.tar.gz 在安装ambari,源码编译的时候下载的文件有问题 手动下载 地址 https://github.com/yarnpkg/yarn/releases/download/v0.23.2/yarn-v0.23.2.tar.gz

Global site tag (gtag.js) - Google Analytics