2026年gmock(Gmock顺序返回值)

gmock(Gmock顺序返回值)熟悉 TCP 协议下通信程序的编写 编译和执行 模拟实现 TCP 协议通信过程 要求编程实现服务器端与客户端之间双向数据传递 客户端向服务器端发送 我是 XX 专业学生 服务器回应 我也是 XX 专业学生 提示 服务器端创建监听套接字 并为它关联一个本地地址 指定 IP 地址和端口号 然后进入监听状态准备接受客户的连接请求 为了接受客户端的连接请求 服务器端必须调用 accept 函数



熟悉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.套接字的创建和关闭
 
  
参数 说明 af socket 使用的地址格式 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 函数将返回尽可能多的当前可用信息,直到达到缓冲区指定的大小。

今天的文章 2026年gmock(Gmock顺序返回值)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2026-03-03 08:27
下一篇 2025-03-15 14:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/49355.html