Socket网络层底层原理问题 网络socket 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题1这么理解不算错,实际上过程要复杂得多问题2,完全不用担心,jvm工作在网络七层协议的五层之上。而数据包是第二层负责的,简单来说就是操作系统的接口已经接管了类似问题,jvm直接认为收到的都是可靠数据。 问题1:数据包先到网卡缓冲区,然后读取的时候是批量的从网卡缓冲区复制到JVM的内存里由流去读我的理解: Socket的确是建立缓冲区,你读取数据包就是接收缓冲区,如果是发送就有发送缓冲区,读取数据包,就是获取Socket缓冲区的输入/输出流,读取数据。 至于有没有复制到JVM,这个我不太清楚。 问题2:由于每个数据包的大小不固定,那么上述代码是不是会出现 inputStream.available();返回的位置将一个数据包切成两半,然后通过流读到的数据是不完整的数据包这个不会啊,Socket发送和接收文件都是通过流,inputStream.available();通过这个获取响应字符的大小,读取数据后转换成流... 然后传输,得到的都是完整的,除非你多线程去访问,可能就会出现得到数据包不完整的情况这是我的理解,.不知道对不对,仅供参考~ 这个跟我今天研究的结果比较相似,事实上,tcp协议保证的是read到的东西一定是write的东西,所以available读到的一定是完整的数据报文,而通过定长的byte缓冲区读出来的也确实有可能是不完整的报文 在ssh2论坛怎样实现回帖啊 strut2如何让没有后缀的请求不经过struts2框架的处理? maven build 问题 web.xml申明部分版本问题 学习struts最快需要多长时间?有好的开发工具么? 各位大哥,谁知道用什么eclipse的插件能够将自己编写的hibernate映射文件生成java文件 急救!!JAVA读写文本问题[高分] 在struts Action中怎样读jsp中不同的form!!!!!!!! 配置tomcat的时候总是出现问题。 struts如何在action中控制错误页面? 求大神 小数取整数
问题2,完全不用担心,jvm工作在网络七层协议的五层之上。而数据包是第二层负责的,简单来说就是操作系统的接口已经接管了类似问题,jvm直接认为收到的都是可靠数据。
问题2:
由于每个数据包的大小不固定,那么上述代码是不是会出现 inputStream.available();返回的位置将一个数据包切成两半,然后通过流读到的数据是不完整的数据包这个不会啊,Socket发送和接收文件都是通过流,inputStream.available();通过这个获取响应字符的大小,读取数据后转换成流... 然后传输,得到的都是完整的,除非你多线程去访问,可能就会出现得到数据包不完整的情况
这是我的理解,.不知道对不对,仅供参考~
这个跟我今天研究的结果比较相似,事实上,tcp协议保证的是read到的东西一定是write的东西,所以available读到的一定是完整的数据报文,而通过定长的byte缓冲区读出来的也确实有可能是不完整的报文