gpt4 book ai didi

c++ - 连接到套接字失败 - errno 88 (cpp)

转载 作者:行者123 更新时间:2023-11-30 03:30:53 26 4
gpt4 key购买 nike

我正在尝试创建服务器/客户端通信,但它在 connect 函数上失败了,errno 88。我检查了 socketfd 是否有效(因为这个 errno 意味着我正在尝试对非套接字对象进行套接字操作)。

int main (int argc, char *argv[])
{
// Validity check
if (argc != VALID_ARG_NUM) {
std::cout << INVALID_ARG;
return 0; // todo - return 0 is correct??
}

int port;
struct sockaddr_in server_address;

// server_address initialization.
server_address.sin_family = AF_INET;
server_address.sin_port = htons((uint32_t)atof(argv[3]));
server_address.sin_addr.s_addr = inet_addr(argv[2]);
memset(&(server_address.sin_zero), '\0', sizeof(server_address));

// Create the client socket.
if (sockfd = socket(AF_INET, SOCK_STREAM, 0) < 0) {
std::cout << "ERROR: socket " << errno << "." << std::endl;
exit(1);
}
// Connect to server.
if (connect(sockfd, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
std::cout << "ERROR: connect " << errno << "." << std::endl;
std::cout << CON_FAIL;
close(sockfd);
exit(1);
}
.......

谢谢。

最佳答案

语句的优先级

sockfd = socket(AF_INET, SOCK_STREAM, 0) < 0

sockfd = ((socket(AF_INET, SOCK_STREAM, 0)) < 0)

因此您分配了一个 bool 值,它被隐式转换为整数(或 sockfd 具有的任何类型)。你的意思可能是相反

(sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0

关于c++ - 连接到套接字失败 - errno 88 (cpp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44653936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com