测试setsockopt设置超时是否生效代码

简介: // 测试setsockopt设置超时是否生效代码 #include arpa/inet.h> #include netinet/in.

  1. // 测试setsockopt设置超时是否生效代码
  2. #include arpa/inet.h>
  3. #include netinet/in.h>
  4. #include stdlib.h>
  5. #include stdio.h>
  6. #include string.h>
  7. #include sys/socket.h>
  8. #include sys/types.h>
  9. #include unistd.h>

  10. // 编译:
  11. // g++ -g -o x x.cpp
  12. int main()
  13. {
  14.     // 创建一个客户端TCP socket
  15.     int fd = socket(PF_INET, SOCK_STREAM, 0);
  16.     if (-1 == 0)
  17.     {
  18.         perror("socket");
  19.         exit(1);
  20.     }

  21.     // 设定目标地址
  22.     struct sockaddr_in addr;
  23.     addr.sin_family = AF_INET;
  24.     addr.sin_port = htons(9090); // 确保这个端口是打开的
  25.     addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  26.     memset(addr.sin_zero, 0, sizeof(addr.sin_zero));
  27.     int ret = connect(fd, (const struct sockaddr *)&addr, sizeof(addr));
  28.     if (ret != 0)
  29.     {
  30.         perror("connect");
  31.         exit(1);
  32.     }

  33.     // 设置recv超时
  34.     struct timeval timeout;
  35.     timeout.tv_sec = 6; // 设定6秒超时
  36.     timeout.tv_usec = 0;
  37.     ret = setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
  38.     if (ret != 0)
  39.     {
  40.         perror("setsockopt");
  41.         exit(1);
  42.     }

  43.     // 调用recv,期望预期的时间内超时
  44.     char buf[4096];
  45.     //ret = recv(fd, buf, sizeof(buf), 0);
  46.     ret = read(fd, buf, sizeof(buf));
  47.     printf("%d: %m\n", ret); // 期待结果:-1: Resource temporarily unavailable

  48.     close(fd);
  49.     return 0;
  50. }

相关文章
|
2月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之idea本地测试代码,要增大 Flink CDC 在本地 IDEA 测试环境中的内存大小如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
jenkins Devops 测试技术
单元测试与质量保证:确保Visual Basic代码的健壮性
【4月更文挑战第27天】在VB开发中,单元测试是保证代码质量和软件健壮性的关键。本文介绍了单元测试的基础,包括其定义和好处,如提高代码质量、促进重构。接着,讨论了MSTest、NUnit和xUnit等VB单元测试工具。遵循TDD原则和最佳实践,编写独立、有针对性的测试,并注重测试速度和覆盖率。通过示例展示了如何在Visual Studio中设置和运行测试。最后,提到了持续集成和自动化测试工具,如Jenkins和静态代码分析工具,以提升软件开发效率和质量。单元测试不仅是技术手段,更是提升团队协作和软件工程水平的文化体现。
|
13天前
|
Devops jenkins 测试技术
如何在Visual Basic项目中实施单元测试以确保代码健壮性
【7月更文挑战第2天】本文探讨了如何在Visual Basic项目中实施单元测试以确保代码健壮性。单元测试基础包括验证代码单元的功能,促进重构和提高代码质量。MSTest、NUnit和xUnit是VB.NET的单元测试工具。遵循TDD原则,保持测试独立,关注单一功能,并确保快速执行。示例展示了如何为`Calculator`类的加法方法编写MSTest。持续集成与自动化测试工具如Jenkins和Azure DevOps辅助测试运行和代码质量检查。单元测试是提升软件质量和开发效率的关键实践,反映了良好的开发文化。
18 2
|
26天前
|
测试技术 Python
Python教程:利用timeit模块对代码进行性能测试
在Python中,了解代码的性能是优化和改进的关键。timeit模块是Python标准库中的一个工具,用于测量代码片段的执行时间。本文将介绍timeit模块的各种接口、命令行使用方法以及如何对代码中的函数或类进行性能测试。
25 3
|
11天前
|
数据库
获取本地某文件中的以.jpg文件的名字,并导入数据库的测试代码
获取本地某文件中的以.jpg文件的名字,并导入数据库的测试代码
|
14天前
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
50 0
|
17天前
|
测试技术
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
|
1月前
|
Java 测试技术 Web App开发
《手把手教你》系列技巧篇(六十二)-java+ selenium自动化测试-RemoteWebDriver让你的代码与测试分离(远程测试)
【6月更文挑战第3天】本文介绍了在没有本地浏览器的情况下,如何使用RemoteWebDriver进行远程自动化测试。RemoteWebDriver分为客户端和服务端,客户端运行测试代码,服务端启动服务。服务端需要安装JDK、浏览器和对应的WebDriver,并启动selenium-server-standalone.jar。客户端通过URL连接到服务端,并指定预期的浏览器类型。这样,客户端的测试代码就能远程控制服务端的浏览器执行自动化测试。RemoteWebDriver的优点包括跨平台和浏览器测试、提高测试稳定性以及使测试环境和执行代码的机器分离。
39 3
|
21天前
|
运维 Java 测试技术
Spring运维之业务层测试数据回滚以及设置测试的随机用例
Spring运维之业务层测试数据回滚以及设置测试的随机用例
14 0
|
24天前
|
前端开发 JavaScript 算法
JavaScript事件监听测试代码
JavaScript事件监听测试代码
15 0