我在互联网上找不到关于此主题的任何信息,并在此处询问。例如,我有IP 1.1.1.1和2.2.2.2的服务器以及指向它的两个域名one.example.com和example2.net,并且在端口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 / domain,我需要在纯套接字代码中执行此类操作。接受C ++(main)或Java(或任何其他),我需要知道这个的机制。
答案 0 :(得分:3)
IP存储在IP packet header内,您可以从那里读取。为了获得主机,您可能必须通过发送request(或使用function来为您提供DNS服务器)。您可以找到这两个问题的示例,即使在this site
上也是如此