1

我正在编写一个 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”而不会失败。我错过了什么吗?

4

2 回答 2

0

只要客户端实际连接,您所做的就是正确的。根据gSOAP 文档

unsigned int soap::ip

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

于 2018-12-06T18:44:08.730 回答
0

首先,你可以通过soap->master获取当前接收socket fd,这个fd表示与客户端的连接,确保你soap使用tcp,然后你可以使用getsockname()获取本地ip地址,getpeername获取peer地址。

我的 gsoap 版本是 2.8.9

于 2016-05-12T06:11:56.903 回答