![image](http://os78f4hny.bkt.clouddn.com/20170718001.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
一、TCP 1.TCP又叫做套接字,传输安全,速度慢。
TCP和UTP是网络的传输协议,跟java没什么关系,没有说用java做的客户端必须连接java做的服务器,我们可以用c和c++做客户端,直接连接到java做的服务器都可以,只要都遵守TCP的协议规则就行。 2.TCP的连接 TCP有三次握手的规则,三次握手是? TCP连接服务器的时候要来来回回三次询问,第一次问服务器是否存在网络是否通畅,服务器回答我存在,第二次询问服务器是否能进行连接啊,服务器说可以连接。第三次就是完成连接。TCP连接模式就是,客户端传输一个数据到服务器,服务器就会回客户端收到数据了,这样客户端才会进行下一个文件的传输,这样来来回回的确认才能确保文件安全无误的传输到对方的电脑上。 - ServerSocket是服务端,SocKet是通讯员,服务器就相当于一个很大的插板,插板上有很多个插口,而ServerSocket就相当于是一个很大的插板,插板上有很多个插口,你们都可以从这个插口上取得联系,一些电气设备需要来连接这个插板,这时电气设备就的插口就需要跟插板的插口进行连接。这样就相当于电气设备的插口是Socket(通讯员),插板上的插口也相当于是Socket(通讯员),而这个可以容纳许多Socket的插板就相当于是SeverSocket(服务端)。最后连接在一起就是Socket(通讯员)对Socket(通讯员),如果还有一个电器设备要连接在插板上就相当于连接到第二个插口上。
![image](http://os78f4hny.bkt.clouddn.com/20170718003.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
4.ServerSocket建立一个服务器IP是22.5.6.7端口为8989,建立一个客户端连接IP为22.5.6.7:8989的计算机这个客户端的Socket发出请求要连接SeverScoket服务器,ServerSocket就会马上产生一个对象Socket,这个产生的对象Scoket就会与客户端的Scoket建立通讯连接。一旦客户端与服务端建立好了连接,就会产生一个InputStream和OutputStream的通道。 ![image](http://os78f4hny.bkt.clouddn.com/20170718004.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
5.当客户端通过电脑固定的IP127.0.0.1端口8080对网络请求访问服务器,通过accept()方法来监听有没有客户端来连接,如果有客户来连接就马上产生Socket对象,Socket对象就会产生两个流一个是InputStream和OutputStream流,相应的客户端也会产生InputStream和OutputStream流来进行连接,服务器ServerSocket要跟客户端说话就通过OutputStream来传输,相应的客户端Socket要跟服务器说也是通过OutputStream来传输。 ![image](http://os78f4hny.bkt.clouddn.com/20170718005.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
6.代码 (1)创建一个服务器,用浏览器客户端来进行连接。 ![image](http://os78f4hny.bkt.clouddn.com/20170718006.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
创建一个服务器端口号为8080,等待客户端来连接,连接时就会产生Socket对象,这个时候就通过InputStream和OutputStream拿出来,准备好一个字节数组,准备好读取客户端传过来的数据,客户端传过来信息通过String转换成字符,然后打印出去。浏览器就是用TCP协议,浏览器也是一个客户端。用浏览器这个客户端访问服务器时会告诉服务器你电脑的一些信息。 (2) ![image](http://os78f4hny.bkt.clouddn.com/20170718007.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
![image](http://os78f4hny.bkt.clouddn.com/20170718008.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
这就是来回询问。 ![image](http://os78f4hny.bkt.clouddn.com/20170718009.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
![image](http://os78f4hny.bkt.clouddn.com/201707180010.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
(3)多网卡服务器的目的是:假设一个服务有两个网卡,一个连接内网连接内网服务器,进行内网服务,一个连接外网连接着国家骨干网。这样国家骨干网可以连接过来,城域网也可以连接过来。 ![image](http://os78f4hny.bkt.clouddn.com/201707180011.png?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
|