You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ socket编程中如何处理connect函数返回的错误码

connect() 和 getaddrinfo() 的错误返回逻辑有区别:getaddrinfo() 会直接将错误码作为返回值返回,而 connect() 出错时只会固定返回 -1,具体错误码会存储在全局变量 errno 中。

你可以使用标准库的 strerror() 函数实现类似 gai_strerror() 的效果,传入 errno 作为参数即可获取可读的错误描述,修改后的代码示例如下:

#include <string.h> // strerror 所需头文件
#include <errno.h>  // errno 所需头文件

// 其余原有代码保持不变
if((status = connect(sockfd, res->ai_addr, res->ai_addrlen)) != 0){
    fprintf(stderr, "connect: %s\n", strerror(errno));
    return 2;
}

也可以直接用更简便的 perror() 函数直接输出带自定义前缀的错误信息:

if((status = connect(sockfd, res->ai_addr, res->ai_addrlen)) != 0){
    perror("connect");
    return 2;
}

注意:出错后要尽快读取 errno 或调用 perror/strerror,避免中间其他系统调用出错覆盖 errno 的值。

内容的提问来源于stack exchange,提问作者Navxihziq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:15:07