每日一学之socket编程(一)

图片来自于百度图片

什么是socket编程

网络上的两个程序,通过一个双向通信的链路,将两个程序连接起来,那么每一段都是一个socket。因此socket常被称为“套接字”。

对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。千万不要被Java中的SocketServerSocket迷糊了眼睛。

网络的分层

对于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个字节的长度。

下期提要

下期将使用多线程的方式来解决多用户连接的问题,同时解决不定长数据问题。敬请期待!

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171208G04D7A00?refer=cp_1026

相关快讯

扫码关注云+社区