1.Socket编程方式
Socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开Open->读写write/read->关闭close”模式来操作文件。Socket就是该模式的一个实现,Socket即是一种特殊的文件,一些Socket函数就是对其进行操作(读写IO、打开、关闭)。因此Socket也提供了类似于连接Connect、关闭连接Close、发送、接收等方法的调用
2.数据传输方式
常用stream和dgram
- STREAM表示面向连接的数据传输方式,数据可以准确无误地到达另一台计算机,如果丢失或损坏,可以重新发送,但是相对效率低
- DGRAM表示无连接的数据传输方式,计算机只管数据传输,不做数据校验,DGRAM所做的校验工作少,所以效率比STREAM高
QQ视频聊天和语音聊天使用的就是DGRAM传输数据,因为首先需要保证通信的效率,尽量减少延迟,而数据的正确性是次要的,即使丢失很小的一部分数据视频和音频也可以正常解析,最多出现噪点或杂音,不会对通信质量有实质影响
3.服务器编写步骤
- 调用socket()函数创建一个用于通信的套接字
买了个手机 - 给已经创建的套接字绑定一个端口号,一般通过设置网络套接口地址和调用bind()函数来实现
办张手机卡,插上手机卡 - 调用listen()函数使套接字成为一个监听套接字
等待来电 - 调用accept()函数来接受客户端的连接,这时就可以和客户端通信
接听到了打来的电话 - 处理客户端的连接请求
接通电话听、说沟通 - 终止连接
挂断电话
4.客户端编写步骤
- 调用socket()函数创建一个用于通信的套接字
买了个手机 - 通过设置套接字地址结构,说明客户端与之通信的服务器的IP地址和端口号
输入对方手机号 - 调用Connect()函数来建立与服务器的连接
拨号,并等接听 - 调用读写函数发送或接收数据
说话、听话 - 终止连接
挂断电话