所有数据传输都有三要素:源、目的、长度
参与数据传输的两台设备分别是服务器和客户端,服务器总是被动的响应客户端请求的,而客户端是主动发起请求。
客户端程序与服务器程序之间的数据传输有两种协议,分别是TCP协议和UDP协议,TCP协议通过三次握手保证数据可靠,若不可靠,则重传,而UDP则不用,在视频通话中用的就是UDP协议,因为视频偶尔丢包、花屏是可接受的,若用TCP,每个数据包都要确保可靠再传输,当其出错就重传,这会使后续数据包阻滞,视频效果不好。
用socket()得到一个句柄,然后用bind()将fd、ip和端口绑定起来,再用listen()启动监测数据,用accept()用于等待,接受,连接,用connoct()建立连接。
怎么用这些函数呢?
例如,socke()函数这么用:可以在虚拟机的Linux系统的终端里输入man 2 socket(),查看man手册,如图所示,AF_INET就是用IPv4协议的参数名,替换掉domian形参。bind()函数也一样。
然后运行韦东山老师编写的客户端和服务器程序,便可以实现客户端与服务器的通信了。
参考视频:
https://www.bilibili.com/video/BV1kk4y117Tu?p=31&share_source=copy_web