Socket和io中遇到的一点小问题

问题描述

写法1:try{while(connect){//控制循环结束,初始为trueStringstr=dis.readUTF();System.out.println(str);}}catch(EOFExceptione){System.out.println("客户端断开连接");}catch(IOExceptione){System.out.println("接收错误");e.printStackTrace();}finally{stop();//将connect值设为false,并且关闭流和套接字}写法2:while(connect){try{Stringstr=dis.readUTF();System.out.println(str);}catch(EOFExceptione){System.out.println("客户端断开连接");}catch(IOExceptione){System.out.println("接收错误");e.printStackTrace();}finally{stop();}}请问这两种写法为什么执行效果完全不一样,第一种就会得到正确的结果,而第二种的Stringstr=dis.readUTF();这句话就会抛出DataInputStream.readUTF(UnknownSource)的异常?先谢谢大家啦

解决方案

解决方案二:
while(connect){try{Stringstr=dis.readUTF();System.out.println(str);}catch(EOFExceptione){System.out.println("客户端断开连接");}catch(IOExceptione){System.out.println("接收错误");e.printStackTrace();}finally{stop();}}

一次循环你就stop了,stop是不是把io关了?
解决方案三:
就是ls说的
解决方案四:
引用1楼shaosijun2004的回复:

Javacodewhile(connect){try{Stringstr=dis.readUTF();System.out.println(str);}catch(EOFExceptione){S……

up
解决方案五:
该回复于2010-12-17 13:20:08被版主删除
解决方案六:
第一个while是在try内,也就是说当真的时候一直会循环while里面的内容。第二个while是包含try的,也就是说执行了一次之后,就跑到finally去了,也就stop了,然后也就宣告结束了。。。。
解决方案七:
学到了,我也犯了这个错误
解决方案八:
第二种写法,循环体里面finally里面的close方法,应该是将IO流或者Socket关闭了。后面的循环,在进行读操作,肯定会抛出异常。

时间: 2024-07-29 18:43:45

Socket和io中遇到的一点小问题的相关文章

关于APS中iframe的一点小问题

问题描述 小弟菜鸟刚接触ASP遇到些问题,希望各位帮忙解决一下!父页A.aspx中包含iframe我想从A.aspx中点击按使IFRAME的SRC='b.aspx'但是写这段代码总是提示window.parent.document.getElementById()为空或不是对象代码!代码如下privatevoidButton1_Click(objectsender,System.EventArgse){this.Response.Write("<script>window.paren

求教socket异步编程中连接的一点问题,怎样实现客户端连不上服务端的时候一直去连接它

问题描述 假设现在客户要去连接服务端而此时服务端可能没开启或者其他其他原因造成客户端第一次或者前几次都不能够连接到,怎样使得客户在连接失败后继续连接它知道成功? 解决方案 解决方案二:up

大话存储系列22——存储系统内部IO 中

4.卷管理层IO 卷管理层在某种程度上来讲是为了弥补底层存储系统的一些不足之处的,比如LUN空间的动态管理等.卷管理层最大的任务是做Block级的映射.对于IO的处理,卷层只做了一个将映射翻译之后的IO向下转发的动作以及反向过程.另外,应用程序可以直接对某个卷进行IO操作而不经过文件系统.我们所说的不经过文件系统,并不是说Bypass系统内核缓存的Direct IO,而是完全不需要FS处理任何块映射关系.这时就需要由应用程序自行管理底层存储空间,而且此时不能对这个卷进行FS格式或者其他未经应用程

Socket重叠IO

1.为什么到现在才弄懂这个 不知道这个Socket重叠IO这种模型是不是socket IO完成端口的基础,不过我感觉,学习一下这个再去学习socket IO完成端口是比较有好处的. 这个Scoket重叠IO我以前记得看过好几次,都没看懂.一部分原因是我没能静态心来写代码,还有更重要的原因就是,Socket重叠他们的结构体参数,还有传参数让人很难理解.下面我将对这些数据结构和参数进行一下讲解 2.初识WSARecv 函数   int WSARecv( SOCKET s,//要接收消息的socket

设计实例分析:白社会中三个较小的设计点

今天,3月21日,世界睡眠日,恰巧是个周末,劳累了一周的大家有没有在家里睡懒觉呢~提醒大家,关注睡眠质量就是关注生活质量,关注睡眠就是关注健康. 好了,回到正题,在前作(一)和(二)中谈到了真心话和任务的设计,这次谈谈白社会中三个较小一点的设计点. 一.好友新鲜事新增提醒 在白社会的首页中,分量最重的就是这个好友新鲜事了,为了保证信息流的快速直接,我们采用了"推"的模式,并且直接即时的将信息推到用户的面前,这就是所谓的实时Feed了,这其实是一种非常酷的体验,信息获取快速直接,也省了刷

使用.Net IDE的一点小技巧

技巧 我和几个同学合作一个项目,项目不大,没有使用什么版本管理系统.为了让别人知道自己修改了什么地方,我们要在自己修改的源代码处加上注释.但每个人的注释风格不同,查找起来很不方便.后来我找到一个简单的解决方案:在修改处加上具有统一开始字符的注释(如"MODIFY"):    'MODIFY 小李 2005-6-22 改正连接字串为空时出现异常的bug     ......     'MODIFY 小王 2005-6-23 添加Access接口     ...... 然后在VS.Net的

WPS文字中三招排版小技巧

  在工作或学习中,编辑完文档后,常常会对多页的文档进行页码的设置,不然装订或者阅读起来比较麻烦.而在WPS编辑文字,一点小技巧会达到事半功倍的效果,下面就为大家讲讲页码的插入以及排版的小技巧. 1.用A4纸排版的文档,要打印在16开纸上,重新排版太麻烦,要用原来的排版效果,只需要在打印设置面板中的"并打和缩放"下"按纸型绽放"后设置为"16开"即可. 打印设置 2.看到WPS文字(或WPS表格.WPS演示均可)有你喜爱的图片时,只需右击图片,在

刚开始学习spring 有一点小问题 希望能得到高手解答

问题描述 刚开始学习spring 有一点小问题 希望能得到高手解答 ?下面这几段代码中有一个地方不是很理解,希望能得到指点 UserServiceTest.java @Test public void testAdd() throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); UserService service = (UserService)ctx.ge

class-java计算器的除数不能为零实现 出现了一点小问题 求指导

问题描述 java计算器的除数不能为零实现 出现了一点小问题 求指导 private void calute (Float f){ float a1=Float.parseFloat(result);//第一个操作数 float a3=a1;//最终结果 if(flag1){ if(lastcommand.equals(""+"")) a3=a1+f; else if(lastcommand.equals(""-"")) a3