繁体   English   中英

C:从TCP和UDP套接字获取主机名?

[英]C: getting hostname from TCP and UDP socket?

我对连接协议不是很熟悉。

我正在使用以下代码来检查connect(),以便获得主机名:

#ifndef   NI_MAXHOST
#define   NI_MAXHOST 1025
#endif

int error;

 char hostname[NI_MAXHOST] = "";


 error = getnameinfo(serv_addr, addrlen, hostname, NI_MAXHOST, NULL, 0, 0);

 if (error !=0) {
  ALogTCP(@"coudldn't resolve hostname or internal connect");
  [pool release];
  return orig__connect(sockfd, serv_addr, addrlen);
  }


 if (error == 0) {
  ALogTCP(@"hostname: %s", hostname);
  NSString *hostFirst = [NSString stringWithCString:hostname];
}

如果挂接到sendto(),可以使用“相同”代码获取主机名(以便检查UDP)吗?

提前致谢。

您应该能够这样做,因为sendto()传递了一个struct sockaddr ,就像您在示例代码中使用的一样。

当您“钩住” sendto()我假设您将使用仅影响您自己的源代码的宏执行此操作,而不是像中间驱动程序那样。

DNS名称解析取决于发送UDP数据包,因此,如果要以足够低的级别“钩住” sendto() ,您的解决方案将无限递归,因为它会查找传出DNS查找数据包的主机名...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM