0
点赞
收藏
分享

微信扫一扫

什么是socket套接字

高子歌 2022-01-17 阅读 46

文章目录

socket

概念

负责不同网络上进程通信的接口,那么我们可以使用socket让不同主机上的进程可以通过套接字发送报文来进行通信。
在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,调用几个简单的接口就可以实现进程在网络中通信。

形式

<ip地址+协议+端口号>唯一标示网络中的一个进程。例如 TCP 用主机的 IP 地址 + 端口号作为 TCP 连接的端点,这个端点就叫做套接字。一个进程通过调用套接字接口,然后放入通过ip地址和端口号,将数据发送到另一端的对应端口号上。

类型

套接字主要有以下三种类型:

  1. 流套接字:流套接字基于 TCP 传输协议,由于 TCP 协议的特点,使用流套接字进行通信时能够保证数据无差错、无重复传送,并按顺序接收,通信双方不需要在程序中进行相应的处理。
  2. 数据报套接字:数据报套接字基于 UDP 传输协议,
  3. 原始套接字:当需要传送非传输层数据包(例如 Ping 命令时用的 ICMP 协议数据包)或者遇到操作系统无法处理的数据包时,此时就需要建立原始套接字来发送。

服务端和接收端使用socket流程

在这里插入图片描述

服务端:

  1. 创建套接字,
  2. 然后调用bind方法绑定进程端口。
  3. 然后调用listen方法监听,该方法是将该进程变为服务器进程。
  4. 然后调用accept方法,该方法会阻塞,最重要的一步是等待并接受客户的连接。

客户端:

  1. 创建套接字。
  2. 然后调用connect方法,connect方法和目的服务器建立三次握手连接。
  3. 然后建立连接完成就可以进行通信了。

使用send和recv方法来互相发送和接收数据。
read()/write()
recv()/send()

最后调用close方法来进行四次挥手关闭连接。

举报

相关推荐

0 条评论