来看Java Socket输出流怎样检测到EOF
多谢指点,其实我对.net和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。关于InputStream的read(b,off,len)办法publicintread(byte[]b,intoff,intlen)throwsIOException,Javadoc的申明为:
Ifleniszero,thennobytesarereadand0isreturned;otherwise,thereisanattempttoreadatleastonebyte.Ifnobyteisavailablebecausethestreamisatendoffile,thevalue-1isreturned;otherwise,atleastonebyteisreadandstoredintob.
Thedefaultimplementationofthismethodblocksuntiltherequestedamountofinputdatalenhasbeenread,endoffileisdetected,oranexceptionisthrown.
那末关于服务端Socket的输出流来讲,甚么是endoffile-EOF?起首申明一点,没有所谓的标识字符是EOF,关于字撙节来讲,从0~255的每一个字节都是一般的数据,EOF只是输出流的一种形态。
当Socket客户端封闭的时分,服务端输出流在读完一切数据以后就会检测到EOF,然后服务端输出流前往-1。假如客户端Socket没有封闭,而且没无数据可读取的情形下,read办法会堵塞,守候无数据可读。假如设置了SoTimeout,那末直到超时抛出非常,假如没有设置超时,那末会一向守候数据抵达。
经由过程测试,客户端封闭Socket以后,服务端还能够反复读取,每次都前往-1。
csdn博客kingspider-sh
更多出色内容:http://www.bianceng.cn/Programming/Java/
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱. 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
页:
[1]