【发布时间】:2022-01-07 06:32:09
【问题描述】:
我正在创建一个类来处理我可以在多个不同项目中使用的 ZMQCPP。我想让 context_t 和 socket_t 成为一个类变量,所以我不必将它们作为参数传递给不同的函数(我目前所做的)。但我不断收到错误,不确定这是否可能。
我查看了 zmq.hpp 文件,没有看到 socket_t 类的“默认”空构造函数,而无需上下文和套接字类型。
任何意见或指导将不胜感激。
这是我目前的班级设置
#include "zmq_addon.hpp"
#include <zmq.h>
#define DEFAULT_IP "tcp://127.0.0.1:"
#define DEFAULT_PORT 5555
class zmqClientTCP {
public:
zmqClientTCP(); // Default Constructor
~zmqClientTCP(); // Deconstructor
int setAddress(std::string); // Changes the IP Address.
int setPortNumber(int); // Change port number explicitly
int setSocketType(int); // Change the socket type
int connect(); // Connects
void disconnect(); // Disconnects from active connection
void sendMessage(std::string*); // Send Message over connection.
private:
std::string ipAddress = ""; // Holds the IP Address
int portNum = -1; // Holds port number
int sockType = ZMQ_SUB; // Set socket type for ZMQ connection
const zmq::context_t context; // ZMQ Context for single thread
zmq::socket_t socket; // ZMQ Socket
bool isConnected = false; // Bool for connection.
};
类实现:(我想做的)
int zmqClientTCP::connect() {
socket(context, sockType);
socket.connect(ipAddress);
// MONITOR IMPLEMENTATION HERE
if(isConnected)return 1;
return 0
}
void sendMessage(std::string msg){
zmq::message_t zOut(msg);
socket.send(zOut, zmq::send_flags::none);
}
void zmqClientTCP::disconnect() {
socket.disconnect(ipAddress);
}
类实现(我目前所做的):
int zmqClientTCP::connect() {
zmq::context_t context;
zmq::socket_t socket(context, sockType);
socket.connect(ipAddress);
std::string temp
/* MONITOR IS HERE TO TRIGGER isConnected BOOL */
while(isConnected){
temp.clear();
std::getline(std::cin, temp);
sendMessage(socket, temp);
}
disconnect(socket);
return 1;
}
void sendMessage(zmq::socket_t &socket, std::string msg){
zmq::message_t zOut(msg);
socket.send(zOut, zmq::send_flags::none);
}
void zmqClientTCP::disconnect(zmq::socket_t &socket) {
socket.disconnect(ipAddress);
}
【问题讨论】:
标签: c++ class network-programming zeromq