bind:success 但是无法执行下面的操作

发布时间 2023-06-28 20:52:31作者: moveddowm

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