我正在尝试使用 TCP 套接字连接连接到小型服务器(代理)HiveMQ。当我通过 cmd ping 服务器时,我收到消息:
TCP 0.0.0.0:1883 0.0.0.0:0 监听
C中的连接代码是这样的:
addr.sin_family = SL_AF_INET;
地址.sin_port = sl_Htons(1883);
addr.sin_addr.s_addr = sl_Htonl("0.0.0.0");
我得到这个错误:
函数 [ConnectionToHiveMq] 中第 [926] 行的错误 [-111]
这表明我的套接字连接出现错误:
rc = sl_Connect(mysock, (SlSockAddr_t *) &addr, sizeof(addr));
有人可以帮我解决这个问题吗?我尝试了许多不同的端口号和 IP:s,但仍然无法正常工作。如果我连接到 Web 上的应用程序客户端,它就可以工作,我可以在其中订阅来自此代码的消息。但是当我尝试使用我的本地(代理)服务器时,它发送...
最佳答案
netstat(8)
中的 0.0.0.0:1883
输出 TCP 0.0.0.0:1883 0.0.0.0:0 LISTENING
只是意味着服务器正在监听那个盒子上所有可用接口(interface)上的端口 1883。您仍然需要一个有效的 IP 地址才能连接到它(类似于 192.168.0.1
),这将是其中一个接口(interface)的地址(请参阅 ifconfig(8)
),并且是 127.0 .0.1
用于loopback 接口(interface),如果您在同一台机器上。
此外,您的代码行 addr.sin_addr.s_addr = sl_Htonl("0.0.0.0");
是完全错误的。您需要将 IP 地址的字符串表示形式转换为其整数形式,例如 inet_pton(3)
.
关于sockets - 到本地代理的 TCP 套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30079692/