bind:success 但是无法执行下面的操作
perror:success 但是无法执行后续操作
int sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
{
perror("socket err");
return -1;
}
struct sockaddr_in saddr;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(atoi(argv[2]));
saddr.sin_addr.s_addr = inet_addr(argv[1]);
if(connect(sockfd,(struct sockaddr *)&saddr,sizeof(saddr))<0);
{
perror("connect err");
return -1;
}
这是上面的客户端网络连接,最后执行出现 perror connect success 的错误,不理解,报错为什么返回success,但是既然返回了success为什么不往下执行。
原因是
if(connect(sockfd,(struct sockaddr *)&saddr,sizeof(saddr))<0);
没错,就是判断语句加了分号。; 这样不管条件表达式是不是真,都会进入到语句里面,然后就会return -1 返回。解决办法就是去掉“ ; ”就可以了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)