ZeroMQ服务器/客户端与AWS EC2
ZeroMQ server/client with AWS EC2
你好,我写了一个非常简单的ZMQ服务器和客户端应用程序。它在我的本地机器上工作得很好,如果我在AWS(相同的安全组)内运行两个应用程序也工作得很好。我已经尝试在AWS安全组(入站和出站)中打开正确的端口。我甚至对任何端口/地址的所有流量开放了它们。但是我的客户端没有收到已发布的消息。
我的客户端代码看起来像这样
#include <string>
#include <iostream>
#include "zmq.hpp"
static std::string s_recv (zmq::socket_t &socket)
{
zmq::message_t message;
socket.recv(&message);
return std::string(static_cast<char*>(message.data()), message.size()-1);
}
int main (int argc, char* argv[])
{
std::string adrStr = argv[1];
zmq::context_t context (1);
zmq::socket_t subscriber (context, ZMQ_SUB);
std::cout << "Connecting to server..." << std::endl;
subscriber.connect(adrStr.c_str());
const char *filter ="Sending ";
subscriber.setsockopt(ZMQ_SUBSCRIBE, filter ,strlen(filter));
int update_nbr=0;
for (update_nbr=0; update_nbr<100; update_nbr++)
{
zmq::message_t update;
std::string msg_s=s_recv(subscriber);
std::cout<<"Received something..."<<msg_s<<std::endl;
}
return 0;
}
我的服务器端代码看起来像这样
#include <string>
#include <iostream>
#include "zmq.hpp"
int main ()
{
// Prepare our context and socket
zmq::context_t context (1);
zmq::socket_t publisher (context, ZMQ_PUB);
std::cout << "Binding to port ..." << std::endl;
publisher.bind("tcp://*:5556");
int cnt =0;
while(1)
{
char buffer[30];
int msgn=0;
msn = sprint_s(buffer, "Sending number %d", cnt);
std::cout<<buffer<<std::endl;
zmq::message_t message(30);
memcpy((void*) message.data(), buffer,30);
publisher.send(message);
Sleep(1);
cnt++;
}
return 0;
}
在客户端应用程序命令行中,我尝试传入正确格式为的公共DNS"TCP://的公共dns: 5556"我还尝试了公共TCP/IP
谁知道我可能错过了什么?
好的,所以感谢一个朋友帮我弄清楚发生了什么这里是答案:
基本上应用程序是运行在Windows Server 2012实例和Windows防火墙阻止任何流量到我的应用程序。将该应用程序添加到windows防火墙允许的应用程序列表中就成功了。
所以这里是关于如何使它工作的回顾
我的服务器应用程序现在绑定到tcp://*:5556,我的客户端连接到tcp://public-ip:5556
通过EC2控制台管理,添加安全组规则
自定义5556端口上的TCP位置
尝试设置一个弹性IP地址,并将其绑定到路由53 dns名称并使用它。它应该解析为AWS网络上计算机的私有IP地址。仅使用私有IP或私有dns名称将永远无法保证保持不变。
相关文章:
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- AWS Lambda C++运行时权限被拒绝
- 使用 AWS Lambda 触发C++文件 - Hello World
- 使用 C++ 订阅 AWS AppSync
- AWS IoT 开发工具包:通过 TCP 端口 443 使用 MQTT
- AWS AMI 中的 Windows DPAPI 失败,访问被拒绝
- 如何在 std::string 和 Aws::String 之间进行转换?
- 带有 esp32 的 AWS 物联网接收来自某些主题的消息,但无法接收其他主题的消息?
- 使用 AWS C++ 开发工具包分段上传 S3
- 与 AWS 开发工具包的链接问题
- 如何将 EC2 实例用作 API 服务器?当前正在使用C++ lambda
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 在为 iOS 构建 aws-sdk-cpp 时,cmake 上的 CXX 编译器错误已损坏
- 将 aws-iot-device-sdk-cpp-v2 与 CMake 结合使用
- GCP 或 AWS 是否支持 C++ 和 GUI 应用程序开发?
- 如何在C++中使用TCP窗口缩放来提高AWS S3的吞吐量
- 如何使用 AWS C++ 开发工具包在给定的开始和结束日期范围内列出 S3 中的文件
- 如何使用 SAM 在本地运行C++ AWS Lambda 函数?
- 适用于 C++ 的 AWS 开发工具包:对 S3 传输进行完整性检查
- ZeroMQ服务器/客户端与AWS EC2