2013-11-12 1 views
0

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

Когда я подключаюсь от своего клиента к моему серверу, я хотел бы иметь возможность видеть некоторую информацию о соединении, в частности, что такое 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

Вы проверили, что содержимое 'soap-> ip' не равно 0? – patchwork

+0

У меня есть, и это 0, что заставляет меня думать, что он не работает. Если это так, что мне нужно для переключения или флага, чтобы убедиться, что он установлен? – Fallso

+0

Вам, вероятно, нужно вернуться и создать простейший пример. Сначала Msybe создает как клиент, так и сервер на C++ и проверяет, установлен ли 'soap-> ip'. И убедитесь, что вы действительно подключаетесь. – patchwork

ответ

0

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

Моя версия gsoap - 2.8.9