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 返回。解决办法就是去掉“ ; ”就可以了。

posted @   moveddowm  阅读(131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示