【问题标题】:gethostbyname in c works with gethostbyname("www.google.com") but not with my char *c 中的 gethostbyname 与 gethostbyname("www.google.com") 一起使用,但不适用于我的 char *
【发布时间】:2018-10-18 17:37:02
【问题描述】:

gethostbynamegethostbyname("www.google.com") 时有效,但在这样做时:

 char *name = "www.google.com";
 gethostbyname(name);

连接超时。我确保我的字符串在函数之前被修剪,以确保其中没有任何时髦的字符。我不明白这个问题。

【问题讨论】:

  • 你能显示代码吗?
  • gethostbyname() 在大多数平台上已弃用,您应该改用getaddrinfo()

标签: c sockets gethostbyname


【解决方案1】:
#include <stdio.h>
#include <netdb.h>

int main()
{
    char *name = "www.google.com"; 
    struct hostent* test = gethostbyname(name);
    printf("%s\n", test->h_name);
    return 0;

}

我试过了,效果很好:

www.google.com

也许显示代码,我们可以看看问题是否出在其他地方。

【讨论】:

  • 好吧名称来自 fgets(name, 255, stdin),我认为问题在于字符串中附加了“\r”
  • 来自man fgets:> "如果读取了换行符,则将其存储到缓冲区中。"所以,是的,可能就是这样,我希望它会修复!
猜你喜欢
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多