Невозможно получить IP-адрес клиента SOAP на сервере gSOAP

Я пишу как SOAP-клиент, так и сервер, мой сервер находится на C ++ с использованием gSOAP 2.8.15, а мой клиент на Java с использованием JAX-WS 2.0.

Когда я подключаюсь от моего клиента к моему серверу, я хотел бы иметь возможность видеть некоторую информацию о соединении, в частности, каков IP-адрес клиента, подключенного к моему серверу. Я провел некоторое исследование и увидел, что можно получить эту информацию из gSOAP, используя что-то вроде следующего:

printf ("starting session with %d.%d.%d.%d\n",
(int) (soap->ip>>24) & 0xff,
(int) (soap->ip>>16) & 0xff,
(int) (soap->ip>>8) & 0xff,
(int) soap->ip & 0xff);

Тем не менее, это всегда печатает «0.0.0.0» в обязательном порядке. Я что-то пропустил?

0

Решение

Во-первых, вы можете получить текущий сокет получения fd с помощью soap-> master, это означает, что при соединении с клиентом , убедитесь, что мыло использует tcp, затем вы можете использовать getsockname (), чтобы получить локальный IP-адрес, а getpeername — получить адрес партнера.

моя версия gsoap 2.8.9

0

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

То, что вы делаете, правильно, при условии, что клиент действительно подключился. В соответствии с документы gSOAP:

unsigned int soap::ip

IPv4-адрес в числовой форме клиента, полученный на стороне сервера soap_accept (или класс обслуживания C ++ accept метод), возможно, установить в ноль, когда WITH_IPV6 используется.

0

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