这是我参与11月更文挑战的第十二天,活动详情查看:2021最后一次更文挑战
基本概念
- 网络编程:从理论上看是基于网络协议的编程;从代码角度上看,就是就是调用对应的函数,传递对应的参数。
- 网络协议:协议即规则,网络协议就是双方通信的规则。
- 协议就好比语言,要想和中国人打交道就要讲中国话,和美国人讲话就要讲英语,这个就好比TCP这些协议,客户机要和服务器进行通讯,就要使用相同协议。中国话里面有有细分的地方话,就好比有基于TCP的SNTP协议。
- TCP/IP:面向连接的,可靠的,基于字节流的传输层协议。
- UDP:面向非连接的,不可靠的,基于数据报的传输层协议。
套接字编程=Socket编程=网络编程 Socket实际上有分Windows(WinSock)和Linux(BSD Socket),二者接口函数名称虽然一致,但是WinSock增加了一些扩展函数。
实验目的和要求
1. 了解网络协议的基本概念;
2. 掌握基础通信模型的服务器与客户端的通讯过程;
3. 掌握SOCKET的创建。
实验内容和步骤
服务器端:
1.打开网络库
2.校验版本
3.创建SOCKET
4.绑定地址与端口
5.开始监听
6.等待客户端连接
7.与客户端收发消息(循环)
8.运行结果:
客户端:
1.打开网络库
2.校验版本
3.连接服务器
- 与服务器端发收消息(循环)
5.运行结果
思考题
基础通信模型有什么缺点?
如果多个客户端同时连接一个服务器,服务器如果和其中一个客户端进行通讯的过程中,该客户端没有发送消息,那么服务器端就可以在recv这个函数阻塞,无法和其他客户端进行通讯,这个时候要进行改进可以使用select模式,让那些有请求的客户端和服务器进行通讯。
小结
如果这篇文章对你有帮助的话,记得三连凹~