gpt4 book ai didi

c - 伯克利套接字: connect() returns -1 with errno set to ENOENT

转载 作者:行者123 更新时间:2023-11-30 17:58:51 24 4
gpt4 key购买 nike

我有这个代码:

bool CBSocketConnect(uint64_t socketID,uint8_t * IP,bool IPv6,uint16_t port){
// Create sockaddr_in6 information for a IPv6 address
int res;
if (IPv6) {
struct sockaddr_in6 address;
memset(&address, 0, sizeof(address)); // Clear structure.
address.sin6_family = AF_INET6;
memcpy(&address.sin6_addr, IP, 16); // Move IP address into place.
address.sin6_port = htons(port); // Port number to network order
res = connect((evutil_socket_t)socketID, (struct sockaddr *)&address, sizeof(address));
}else{
struct sockaddr_in address;
memset(&address, 0, sizeof(address)); // Clear structure.
address.sin_family = AF_INET;
memcpy(&address.sin_addr, IP + 12, 4); // Move IP address into place. Last 4 bytes for IPv4.
address.sin_port = htons(port); // Port number to network order
res = connect((evutil_socket_t)socketID, (struct sockaddr *)&address, sizeof(address));
}
if (NOT res || errno == EINPROGRESS)
return true;
return false;
}

将 IPv6 设置为 false,IP 设置为::ffff:127.0.0.1(IPv4 环回地址),端口号设置为 45562,res 设置为 -1,errno 设置为 ENOENT (2)。为什么会这样?

我所在的平台是 OSX Mountain Lion。我正在使用 libevent 版本“2.0.19-stable”的套接字。

谢谢。

最佳答案

我发现问题:LLDB

LLDB 告诉我 errno 是 ENOENT,但是当我使用 GDB 时(我显然应该这么做)它告诉我 errno 是 EINPROGRESS!一直都还好。这都是调试器的错。

教训:使用 GDB,切勿使用 LLDB。

关于c - 伯克利套接字: connect() returns -1 with errno set to ENOENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11916719/

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