2025年gmock(Gmock顺序返回值)

gmock(Gmock顺序返回值)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> 

讯享网

熟悉TCP协议下通信程序的编写,编译和执行

模拟实现TCP协议通信过程,要求编程实现服务器端与客户端之间双向数据传递。客户端向服务器端发送“我是XX专业学生”,服务器回应“我也是XX专业学生”。

【提示:服务器端创建监听套接字,并为它关联一个本地地址(指定IP地址和端口号),然后进入监听状态准备接受客户的连接请求。为了接受客户端的连接请求,服务器端必须调用accept函数。客户端创建套接字后即可调用connect函数去试图连接服务器监听套接字。当服务器端的accept函数返回后,connect函数也返回。此时客户端使用socket函数创建的套接字,服务器端使用accept函数创建的套接字,双方实现通信。】

操作系统: Microsoft Windows 11

编程环境:Visual Studio 2022

1、首先创建一个c++空项目用于Winsock编程,项目名称为Server

在这里插入图片描述
讯享网
在这里插入图片描述
然后在解决方案中新建一个客户端的c++空项目

在这里插入图片描述
在这里插入图片描述
创建完成后结构如下:

在这里插入图片描述

2、Winsock库的载入与释放

由于每次写网络程序都必须编写代码载入和释放Winsock库,为了方便管理封装一个CInitSock类来管理Winsock库。

下面代码使用initsock.h头文件来保存,并将其拷贝到服务器和客户端

讯享网

代码解释:

类的构造函数会自动调用,完成对库的初始化,使得后续的、、、等函数可以正常工作。

在程序结束时,对象的析构函数会自动调用,清理库的资源,确保程序退出时没有残留的资源占用。

3、服务器与客户端代码实现

服务器
 
客户端
讯享网

最终的项目结构为:

在这里插入图片描述

实验结果展示

右键解决方案,点击重新生成解决方案将会为两个项目进行编译
在这里插入图片描述
发现运行错误,点击C4996能够看到解决方法。

在这里插入图片描述

报错原因是因为有些函数已被弃用,当开启sdl附加安全检查时编译器会将此警告升级为错误。

分别右键服务器和客户端点击属性,找到C/C++关闭SDL检查

在这里插入图片描述

重新生成解决方案,编译成功

在这里插入图片描述
首先运行服务器端

在这里插入图片描述

然后再运行客户端

在这里插入图片描述
成功实现了服务器端与客户端之间双向数据传递

4、程序工作流程示意图

在这里插入图片描述

5、代码相关函数介绍

1.套接字的创建和关闭
 
参数说明afsocket 使用的地址格式type指定套接字的类型protocol指定使用的协议类型

在Winsock中地址格式只支持AF_INET,套接字类型和对应的协议类型有以下几种:

套接字类型使用的值套接字类型协议字段说明SOCK STREAM流式套接字IPPROTO_TCP使用TCP提供有连接的可靠的传输SOCK DGRAM数据报套接字IPPROTO_UDP使用UDP提供无连接的不可靠的传输SOCK RAW原始套接字IPPROTO_RAW
IPPROTO_ICMP不使用某种特定的协议去封装它,而是由程序自行处理数据报以及协议首部

关闭套接字

讯享网
2.绑定套接字到指定IP地址和端口
 
3.设置套接字进入监听状态
讯享网
4.接受连接请求

如果客户端想要与服务器建立一条 TCP 连接,需要使用 connect() 函数

 
讯享网

该函数在s上取出未处理连接中的第一个连接,然后为这个连接创建新的套接字,返回它的句柄。新创建的套接字是处理实际连接的套接字,它与 s 有相同的属性。

5.收发数据

对于流式套接字来说,一般使用send和recv函数来收发数据

 
讯享网

连接的套接字,它与 s 有相同的属性。

5.收发数据

对于流式套接字来说,一般使用send和recv函数来收发数据

 
讯享网

在阻塞模式下,send 将会阻塞线程的执行直到所有的数据发送完毕(或者发生错误),而 recv 函数将返回尽可能多的当前可用信息,直到达到缓冲区指定的大小。

小讯
上一篇 2025-05-31 22:45
下一篇 2025-04-30 18:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/162716.html