Java — Получить доменное имя входящей связи

Я не нахожу никакой информации по этой теме в Интернете и спросил здесь. Например, у меня есть сервер с 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 / домен входящего запроса, и мне нужно сделать это в чистом коде сокета. C ++ (основной) или Java (или любой другой) приняты, мне нужно знать механику этого.

Извините за мой английский.

1

Решение

IP хранится внутри Заголовок IP-пакета и вы можете прочитать это оттуда. Чтобы получить хост, вам, вероятно, придется запросить DNS-сервер, отправив запрос (или используйте функция который делает это для вас). Вы можете найти примеры для обеих проблем, даже на этот сайт

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]