无法在gSOAP服务器中获取SOAP客户端的IP地址

时间:2013-11-12 14:29:28

标签: c++ web-services soap jax-ws gsoap

我正在编写SOAP客户端和服务器,我的服务器使用gSOAP 2.8.15在C ++中,而我的客户端使用JAX-WS 2.0在Java中。

当我从客户端连接到服务器时,我希望能够看到有关连接的一些信息,具体来说,连接到我的服务器的客户端的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”而不会失败。我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

首先,您可以通过soap-> master获取当前接收套接字fd,这个fd意味着连接客户端,确保您使用tcp,然后您可以使用getsockname()获取本地IP地址和getpeername获取对等地址。

我的gsoap版本是2.8.9

答案 1 :(得分:0)

只要客户端已实际连接,您所做的就是正确的。根据{{​​3}}:

  

unsigned int soap::ip

     

soap_accept(或C ++服务类accept方法)在服务器端接收到的客户端数字形式的IPv4地址,当使用WITH_IPV6时可能设置为零