图片来自于百度图片
什么是socket编程
网络上的两个程序,通过一个双向通信的链路,将两个程序连接起来,那么每一段都是一个socket。因此socket常被称为“套接字”。
对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。千万不要被Java中的Socket和ServerSocket迷糊了眼睛。
网络的分层
对于Java而言,Java的网络类始终只工作在TCP/IP网络中,始终运行在应用层和传输层上,因此,我们只需要了解适用于Internet的标准TCP/IP四层模型。
Java中Socket
Java使用客户端的socket:
1、通过构造函数创建新的socket
2、尝试连接远程主机
3、一旦建立连接之后就从socket取得输出流和输入流,使用这两个流收发数据
4、当数据传输完成之后,一端或者两端将关闭连接
Java使用服务端的socket:
1、通过构造函数创建新的ServerSocket
2、将serverSocket绑定在固定端口
3、阻塞的方式等待客户端来连接,由于服务端是不会关闭的,因此我们要使用点小手段保证服务端一直等待客户端来连接。连接上来后,就跟客户端处理一样了。
有一个小知识点:当你关闭流后,socket其实已经关闭;按照JavaAPI所说,这是一个双工通路。
上面的程序有两个个致命的缺陷,不知道大家能否看出来。那就是同时只能处理一个客户端的连接以及数据只能接收12个字节的长度。
下期提要
下期将使用多线程的方式来解决多用户连接的问题,同时解决不定长数据问题。敬请期待!
领取专属 10元无门槛券
私享最新 技术干货