我有一个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
模式,这造成了故障。
答案 0 :(得分:0)
n=recv(sockfd,&buffer[0],1000,0);
问题出在这里。您正在收听侦听套接字。它应该是:
n=recv(newsockfd,&buffer[0],1000,0);