gpt4 book ai didi

C++如何实现进程间套接字通信?

转载 作者:行者123 更新时间:2023-11-30 04:16:44 25 4
gpt4 key购买 nike

我想使用 C++ 在服务器和多个客户端进程之间使用套接字设置进程间通信。服务器和所有客户端进程将在同一台 Windows 7 计算机上运行。目的是数据的 std::vector 将由服务器保存并传输到每个客户端。有时,服务器持有的 vector 将被扩展 (push_back()) 更多的数据元素,额外的数据将需要传输到每个客户端。任何人都可以提供指向如何执行此操作的示例、相关引用资料或简单的“玩具”代码示例的链接吗?

编辑:经过进一步调查,我发现 Winsock 是合适的。谷歌搜索中有很多关于如何设置 Winsock 服务器和客户端配置的示例。然而,关于如何通过套接字实际传递数据的信息较少。任何人都可以扩展如何通过套接字通信在服务器和客户端之间同步 std::vector 吗?每个客户端都需要指示它已经传递了哪个元素索引,并且服务器将仅提供客户端尚未拥有的那些元素。

最佳答案

如果你想控制tcp/udp层以上的协议(protocol),试试libeventBoost.Asio .如果您对能够传递消息更感兴趣,请查看类似 ZeroMQ 的内容或 AMQP .

使用 ZeroMQ 的服务器示例

#include <iostream>
#include <zmq.hpp>

int main(int argc, const char* argv[])
{
// create a ZeroMQ network context using 1 thread
zmq::context_t ctx(1);

// We are 'UPSTREAM' i.e. a receiver
zmq::socket_t sock(ctx, ZMQ_UPSTREAM);

sock.connect("tcp://localhost:12345");

zmq::message_t msg;
while (sock.recv(&msg)) {
std::cout << "rx: " << (const char*)msg.data() << std::endl;
}
}

关于C++如何实现进程间套接字通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17596823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com