我在 Internet 上没有找到关于此主题的任何信息并在这里询问。例如,我有 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(...);
或Java:
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 packet header 中你可以从那里阅读它。为了获得主机,您可能必须通过发送 request 来询问 DNS 服务器。 (或使用 function 为您完成)。您甚至可以在 this site 上找到这两个问题的示例。
关于java - 获取传入连接的域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037659/