c - gethostbyname() 函数返回空缓冲区

标签 c sockets gethostbyname

我是 Internet 编程的新手,我正在尝试使用 gethostbyname() 函数。当我向 gethostbyname 函数输入诸如“www.yahoo.com”的字符串时,它工作正常,但是当我输入一个 char 数组时,它总是返回一个空缓冲区。

  char hostname[100];
  struct hostent* h;
  gethostname(hostname, sizeof hostname );
  printf("Hostname: %s\n", hostname);
  h = gethostbyname(hostname);

知道如何解决这个问题吗?

最佳答案

您的服务器无法自行解析。 “修复”此问题的最常见方法是将其自己的名称放入其主机文件中。虽然出于各种原因这是一个好主意,但根本问题确实应该得到解决。

  1. DNS 搜索列表通常应该设置为包含主机名的域名 - 或者 - 主机名本身应该是完全限定的。
  2. 应为主机正确设置 DNS。

这使得它根本不是真正的 C 问题,而是服务器配置问题。然后关闭它。

关于c - gethostbyname() 函数返回空缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33747665/

相关文章:

c - 为什么我的函数静态变量尽管增加了却永远不变?

c++ - UDP 传输和维护网络字节顺序

c - 多次调用 gethostbyname 什么时候不安全?

python - Python的urllib2有gethostbyname函数吗?

PHP:gethostbyname 错误

c++ - 读取字符列表并存储在数组中

c - 在 C 中使用 #define 获取常量浮点值的原始数据字节

c - 数组长度在c中用数学运算定义

python - 多个写入作为单个写入处理

linux - recvfrom() 在接收到 udp 数据包时解除阻塞,但返回 0 作为读取字节的大小(使用 oscpack)