#Twitter#在Java里面,计算机之间是如何传输数据的?( 二 )


②接受客户端的请求
服务端的accept()方法 , 返回值就是Socket对象 。
所以发现没有?socket就是服务端和客户端之间沟通的一个桥梁 。
无论是读数据还是写数据都是基于socket的 。
【#Twitter#在Java里面,计算机之间是如何传输数据的?】小时候玩过传声筒的小伙伴应该知道:两个人拿着传声筒 , 拉很远 , 讲话也能听到 。
这个socket就好比这个传声筒 。
读客户端的请求 , 也就需要IO流中的输入流:
socket.getInputStream()得到的就是一个输入流 , 再使用read()方法读取客户端的消息 。
③服务端响应客户端(第二次握手)
接到客户端的信息后 , 服务端要再次向客户端发送信息 。
socket.getOutputStream()得到的就是一个输出流 , 再使用write()方法写发送给客户端的信息 。
④关流
和客户端一样的道理 。
其中ServerSocket也要关流 。
四、运行代码前面也说过了 , 先运行服务端代码 , 再运行客户端 , 结果如下:
①服务端控制台

服务端先运行代码 , 它运行后控制台上是没有输出的 , 它要等客户端向它发起请求 。
其中服务端中accept方法是一个阻塞方法:
accept , 接受的意思 , 就是接受客户端的请求 。
如果客户端一直不向服务端发起请求 , 服务端就一直等 , 这样的话后面的代码都不会运行 。
客户端一运行 , 向服务端发起请求 , 服务端上输出内容 , 就表明客户端的请求它接受到了 。
②客户端控制台
如果说服务端是被动方 , 开启后等待请求;那客户端就是主动方 , 它一运行整个程序就跑起来了 。
客户端上输出内容 , 也就表明服务端的响应它接受到了 , 就可以互相通信了 。
总结


推荐阅读