网络通信Socket

网络编程的三要素

  • ip地址:网络中设备的唯一标识
  • 端口号:标识是哪个应用程序
  • 协议:UDP和TCP

InetAddress的使用

| | |
| | |

UDP协议

  • 用户数据报协议(User Datagram Protocol)
  • UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。
  • 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输

    例如视频会议通常采用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大 影响。但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。

TCP协议

  • 传输控制协议 (Transmission Control Protocol)
  • TCP协议是面向连接的通信协议, 即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,
    它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。
  • 三次握手: TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠性。

    第1次握手,客户端向服务器端发出连接请求,等待服务器确认
    第2次握手,服务器端向客户端回送一个响应, 通知客户端收到了连接请求
    第3次握手,客户端再次向服务器端发送确认信息,确认连接

  • 完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛。例如上传文件、下载文件、 浏览网页

什么是Socket

socket称为"套接字" ,应用程序通常通过"套接字"向网络发出请求或应答网络请求。

在Java中,Socket和ServerSocket类库位 于java.net包中。ServerSocket用于 服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于-一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket,它们的工作都是通过Socket类及其子类完成的。

Socket连接的建立过程

  1. 服务器监听
  2. 客户端发送请求
  3. 建立连接
  4. 通信

Socket的特点

  1. Socket基于TCP链接,数据传输有保障
  2. Socket适用于建立长时间链接
  3. Socket编程通常应用于即时通讯

UDP通信

UDP 通信原理

UDP协议是一种不可靠的网络协议, 它在通信的两端各建立-一个Socke对象, 但是这两个Socket只是发送,接收数据的对象。因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念。
Java提供了DatagramSocket类作为基于UDP协议的Socket

UDP发送数据
  1. 创建发送端的socket对象(DatagramSocket)
    DatagramSocket ds=new DatagramSocket();
  2. 创建数据并把数据打包
    DatagramPacket dp=new DatagramPacket(bytes, bytes.length,address,10086);
  3. 调用DatagramSocket对象的方法发送数据
    ds.send(dp);
  4. 关闭发送端
    ds.close();
UDP接收数据
  1. 创建接收端的Socket对象(DatagramSocket)
  2. 创建一个数据包,用于接收数据
  3. 调用DatagramSocket对象的方法接收数据
  4. 解析数据包,并把数据在控制台显示
  5. 关闭接收端

TCP通信

TCP通信原理

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象, 从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。
Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口并通过Socket产生IO流来进行网络通信。
Java为客户端提供了Socket类,为服务端提供了ServerSocket类

通信示意图:
图1


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部