从客户端读取时出现套接字错误

时间:2017-11-14 12:59:03

标签: c++ tcp

我有一个TCP客户端,它会出现bad address错误。我认为这与代码的这一点有关,但即使尝试各种各样的可能性,我也无法使其发挥作用:

n=recv(sockfd,&buffer[0],1000,0);

缓冲区定义为:std::vector<unsigned char> buffer;并且在我进入读取循环之前将其调整为1000。我怎么能解决它?

----------- EDIT

newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);

我知道clilen声明引起的错误,所以我就是这样做的:

socklen_t clilen= sizeof(cli_addr);

---- SOLUTION:

我在创建套接字之前设置了NONBLOCKING模式,这造成了故障。

1 个答案:

答案 0 :(得分:0)

n=recv(sockfd,&buffer[0],1000,0);

问题出在这里。您正在收听侦听套接字。它应该是:

n=recv(newsockfd,&buffer[0],1000,0);