首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的连接失败了?

为什么我的连接失败了?
EN

Stack Overflow用户
提问于 2013-03-27 10:09:17
回答 1查看 58关注 0票数 0

我正在尝试执行基本的套接字调用,并尝试连接到google.com,但连接调用总是失败并返回-1。为什么它一定会失败?

代码语言:javascript
复制
int main()
{
    int sockfd;
    struct addrinfo *ai;
    char port[4];
    if(sockfd = socket(AF_INET, SOCK_STREAM, 0) < 0) {
        printf("socket return -1");
    }
    sprintf(port, "%d", 80);
    if(getaddrinfo("www.google.com", port, NULL, &ai) < 0)
        printf("-2\n");

    if(connect(sockfd, ai->ai_addr, sizeof(*ai->ai_addr)) < 0)
        printf("connect failed -1");
}
EN

回答 1

Stack Overflow用户

发布于 2013-03-27 10:45:10

我认为问题出在参数sizeof(*ai->ai_addr)上。ai->ai_addr返回一个指向sockaddr结构的指针,取消引用会将您带到结构本身。

代码语言:javascript
复制
struct sockaddr {
   unsigned short sa_family;   // address family, AF_xxx
   char           sa_data[14]; // 14 bytes of protocol address
};

sizeof返回整个结构的大小,而不是地址的长度。

请尝试将参数设置为ai->ai_addrlen

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15650804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档