C++ 数据类型之间的zeromq转换
您好,我正在尝试理解和学习如何使用ZeroMQ,虽然这可能是最基本的,但我没有找到解决方法。在这段代码中,我试图创建一个服务器,将消息从一个客户端转发到另一个客户端。服务器编译得很好,但存在一些主要问题(几乎所有问题都与数据类型有关),因此我甚至无法测试我的服务器 server.cpp:C++ 数据类型之间的zeromq转换,c++,c++11,zeromq,C++,C++11,Zeromq,您好,我正在尝试理解和学习如何使用ZeroMQ,虽然这可能是最基本的,但我没有找到解决方法。在这段代码中,我试图创建一个服务器,将消息从一个客户端转发到另一个客户端。服务器编译得很好,但存在一些主要问题(几乎所有问题都与数据类型有关),因此我甚至无法测试我的服务器 server.cpp: #include "zmq.hpp" #include <string> #include <iostream> #include <unistd.h> int ma
#include "zmq.hpp"
#include <string>
#include <iostream>
#include <unistd.h>
int main ()
{
zmq::message_t board (9);
zmq::context_t context (1);
zmq::socket_t socket1 (context, ZMQ_REP);
socket1.bind ("tcp://*:20000");
zmq::socket_t socket2 (context, ZMQ_REP);
socket1.bind ("tcp://*:20001");
int jogo=9;
while (jogo)
{
zmq::message_t request;
if (jogo%2!=0)
{
socket1.recv (&request);
memcpy ((void *) board.data (), request.data(), 9);
socket2.send (board);
}
else
{
socket2.recv (&request);
memcpy ((void *) board.data (), request.data(), 9);
socket1.send (board);
}
--jogo;
}
return 0;
}
#包括“zmq.hpp”
#包括
#包括
#包括
int main()
{
zmq::留言板(9);
zmq::context\u t context(1);
zmq::socket_t socket1(上下文,zmq_代表);
socket1.bind(“tcp://*:20000”);
zmq::socket_t socket2(上下文,zmq_代表);
socket1.bind(“tcp://*:20001”);
int jogo=9;
while(jogo)
{
zmq::消息请求;
如果(jogo%2!=0)
{
socket1.recv(&request);
memcpy((void*)board.data(),request.data(),9);
socket2.send(板);
}
其他的
{
socket2.recv(和请求);
memcpy((void*)board.data(),request.data(),9);
socket1.send(板);
}
--乔戈;
}
返回0;
}
jogo_客户端.cpp
#include "zmq.hpp"
#include <string>
#include <iostream>
int main ()
{
int player,port=20000,jogo=9,ganhou=0;
std::string game;
std::cin >> player;
port+=player;
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_REQ);
std::cout << "Connecting to game server…" << std::endl;
//-std=gnu++11
socket.connect (std::string("tcp://localhost:")+std::to_string(port));
zmq::message_t board (9);
if(player)
{
while(jogo)
{
if (jogo%2!=0)
{
memcpy ((void *) board.data (), "Hi from 1", 9);
std::cout << "Sending Hi" << std::endl;
socket.send (board);
}
else
{
socket.recv (&board);
memcpy ((void *) ,game, request.data (), 9);
std::cout << "Got from 2: " << std::endl;
std::cout << game << std::endl;
}
--jogo;
}
}
else
{
while(jogo)
{
if (jogo%2!=0)
{
socket.recv (&board);
memcpy ((void *) ,game, request.data (), 9);
std::cout << "Getting from 2 " << std::endl;
std::cout << game << std::endl;
}
else
{
emcpy ((void *) board.data (), "Hi from 2", 9);
std::cout << "Sending Hi" << std::endl;
socket.send (board);
}
--jogo;
}
}
return 0;
}
#包括“zmq.hpp”
#包括
#包括
int main()
{
int播放器,端口=20000,jogo=9,ganhou=0;
字符串游戏;
std::cin>>播放器;
端口+=播放器;
zmq::context\u t context(1);
套接字(上下文,zmq_-REQ);
std::cout这很旧,但是你有什么版本的cppzmq?看看/usr/include/zmq.hpp
我看到zmq::socket\u t::connect(std::string cont&)
。当然,你在第29行有一个明显的编码错误,所以所有的赌注都没有了。
jogo_client.cpp: In function ‘int main()’:
jogo_client.cpp:14:73: error: no matching function for call to ‘zmq::socket_t::connect(std::basic_string<char>)’
jogo_client.cpp:14:73: note: candidate is:
In file included from jogo_client.cpp:1:0:
zmq.hpp:384:21: note: void zmq::socket_t::connect(const char*)
zmq.hpp:384:21: note: no known conversion for argument 1 from ‘std::basic_string<char>’ to ‘const char*’
jogo_client.cpp:29:26: error: expected primary-expression before ‘void’
jogo_client.cpp:29:26: error: expected ‘)’ before ‘void’
jogo_client.cpp:43:26: error: expected primary-expression before ‘void’
jogo_client.cpp:43:26: error: expected ‘)’ before ‘void’