【发布时间】:2017-01-09 05:08:11
【问题描述】:
我需要以定义的时间间隔向我的一台服务器发送一个简单的请求,比如说每 2 秒一次,以便告诉我的服务器我的机器的 IP 地址(因为我有动态的 IP 地址)。我目前正在一个while循环中执行此操作,延迟std::system调用带有--silent选项的curl命令并将rest重定向到/dev/null。像这样 -
curl -s 'http://example.com' > /dev/null
服务器当前解析请求并从中找出所需的 IP 地址。有没有其他方法可以做到这一点?
【问题讨论】:
-
查看这里:stackoverflow.com/questions/2283494/… 获取您自己的 IP 地址。然后您可以打开一个到服务器的套接字并将其发送到那里
-
你使用什么协议?
-
这段代码应该在你的机器而不是服务器上执行。然后它可以获取自己的 IP 地址并通过您使用的任何协议将其发送到服务器。您还可以使用 libcurl 编写执行 curl 请求的代码,而不是使用系统。
-
@Hayt 指出的代码的问题是您必须知道接口名称。更好的方法是在已经连接到服务器的套接字上使用
getsockname -
有几种方法可以做到这一点。 Native C 将打开一个到服务器的套接字(您还需要在服务器上运行一个监听应用程序),然后您可以发送虚拟数据并解析服务器上的 IP 标头以获取发送者地址。您还可以将 IP 地址本身作为数据发送,因此您不需要解析标头。
标签: c++ http c++11 curl networking