网络IO

复习步骤:

1.socket:

   how2j的网络编程  http://how2j.cn/k/socket/socket-ip-port/399.html

   实现程序:客户端和服务器互相发送消息

   github:https://github.com/heyboom/Socket

   API简介 (并发编程网)http://ifeve.com/java-network/

   nio:

   java nio详细教程:http://ifeve.com/java-nio-all/

2.好文:例子有点复杂了,但是思想还是不错的

https://www.cnblogs.com/java-chen-hao/p/11076176.html

3.cyc的总结:

https://github.com/CyC2018/Backend-Interview-Guide

5.注意:

a.http://ifeve.com/java-socket/

从Socket的输入流中读取数据并不能读取文件那样,一直调用read()方法直到返回-1为止,因为对Socket而言,只有当服务端关闭连接时,Socket的输入流才会返回-1,而是事实上服务器并不会不停地关闭连接。假设我们想要通过一个连接发送多个请求,那么在这种情况下关闭连接就显得非常愚蠢。

因此,从Socket的输入流中读取数据时我们必须要知道需要读取的字节数,这可以通过让服务器在数据中告知发送了多少字节来实现,也可以采用在数据末尾设置特殊字符标记的方式连实现。

b.粘包分包

原文地址:https://www.cnblogs.com/heyboom/p/10857324.html