基础通信模型(基于TCP)

192 阅读2分钟

这是我参与11月更文挑战的第十二天,活动详情查看:2021最后一次更文挑战

基本概念

  • 网络编程:从理论上看是基于网络协议的编程;从代码角度上看,就是就是调用对应的函数,传递对应的参数。
  • 网络协议:协议即规则,网络协议就是双方通信的规则。
  • 协议就好比语言,要想和中国人打交道就要讲中国话,和美国人讲话就要讲英语,这个就好比TCP这些协议,客户机要和服务器进行通讯,就要使用相同协议。中国话里面有有细分的地方话,就好比有基于TCP的SNTP协议。
  • TCP/IP:面向连接的,可靠的,基于字节流的传输层协议。
  • UDP:面向非连接的,不可靠的,基于数据报的传输层协议。

套接字编程=Socket编程=网络编程 Socket实际上有分Windows(WinSock)和Linux(BSD Socket),二者接口函数名称虽然一致,但是WinSock增加了一些扩展函数。

实验目的和要求

1.    了解网络协议的基本概念;

2.    掌握基础通信模型的服务器与客户端的通讯过程;

3.    掌握SOCKET的创建。

实验内容和步骤

服务器端:

1.打开网络库

image.png

2.校验版本

image.png

3.创建SOCKET

image.png

4.绑定地址与端口

image.png

5.开始监听

image.png

6.等待客户端连接

image.png

7.与客户端收发消息(循环)

image.png

8.运行结果:

image.png

客户端:

1.打开网络库

image.png

2.校验版本

image.png

3.连接服务器

image.png

  1. 与服务器端发收消息(循环)

image.png

5.运行结果

image.png

思考题

基础通信模型有什么缺点?

如果多个客户端同时连接一个服务器,服务器如果和其中一个客户端进行通讯的过程中,该客户端没有发送消息,那么服务器端就可以在recv这个函数阻塞,无法和其他客户端进行通讯,这个时候要进行改进可以使用select模式,让那些有请求的客户端和服务器进行通讯。

小结

如果这篇文章对你有帮助的话,记得三连凹~