获取传入连接的域名

Get domain name of incoming connection

本文关键字:域名 连接 获取      更新时间:2023-10-16

我在互联网上找不到有关此主题的任何信息,并在此处询问。例如,我有 IP 为 1.1.1.1 和 2.2.2.2 的服务器,以及指向它的两个域名 one.example.com 和 example2.net,以及 socke 在端口 1234 上侦听传入连接。

例如:

C/C++:

listenfd=socket(AF_INET, SOCK_STREAM, 0);
bind(...);
listen(...);
while(...) accept(...);

或爪哇:

ServerSocket socket = new ServerSocket(1234);
while(...) {
    Socket connectionSocket = welcomeSocket.accept();
    ...
}

当客户端在我的套接字上接受时,我需要知道客户端使用什么域名/IP 进行连接。它可以是 one.example.com 或 example2.net 和/或IP 1.1.1.1或2.2.2.2(如果仅使用IP连接)。

Apache以某种方式确定了传入请求的ip/域,我需要在纯套接字代码中做这样的事情。C++(主)或Java(或任何其他)被接受,我需要知道这方面的机制。

IP 存储在

IP 数据包标头中,您可以从那里读取它。为了获得主机,您可能必须通过发送请求(或使用为您执行此操作的功能)来询问DNS服务器。即使在这个网站上,您也可以找到这两个问题的示例