c++ - 使用 Winsock 7 C++ 从服务器向客户端发送函数调用的最有效方法

标签 c++ winsock2

我使用 C++ 和 Winsock 创建了服务器和客户端应用程序。连接到服务器后,客户端显示一个动画序列。服务器机器可以处理多个客户端连接并记录连接的客户端总数。

目前,客户端动画序列在客户端连接后立即开始。我想要发生的是,当 2 个客户端连接到服务器时,服务器应该向客户端 1 发送一条消息以调用 Render() 函数(在客户端中),然后在稍后的时间向客户端发送另一条消息调用相同 Render() 函数的客户端 2。

只是寻求有关实现此目标的最佳方法的帮助。

谢谢

最佳答案

您不能发送函数调用(这个词的任何直接含义),因为函数存在于单个进程空间中并且不能(轻易地)通过套接字连接发送。

您可以做的是发送一条消息,客户端将根据该消息调用所需的函数。

根据您使用的协议(protocol),这可能就像服务器向每个客户端的 TCP 连接发送单个字节(例如“R”代表渲染等)一样简单,并且客户端代码会知道调用 Render( ) 当它接收到该字节时。当然,更复杂的协议(protocol)可能会更精细地编码相同的信息。

在解释型语言(例如 Java 或 Python)中,可以通过套接字连接发送实际代码,以 Java .class 文件或 Python 源文本等形式。但这样做几乎总是一个坏主意,因为攻击者可以利用该机制向客户端发送恶意软件并让客户端执行它。

关于c++ - 使用 Winsock 7 C++ 从服务器向客户端发送函数调用的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090666/

相关文章:

c++ - 将 glTexSubimage2d 与动态大小的纹理数组一起使用

c++ - Apple Mach-O Linker (Id) 在 C++ 中创建运算符友元函数时出错

c++ - 如何将张量转换为图像数组?

c++ - 环绕模式 std::begin;返回开始(c);进入一个功能

c++ - 在没有静态链接的情况下使用 Winsock

c - 获取地址信息 : A non-recoverable error occurred during a database lookup

c++ - Winsock2:如何通过在 VC++ 中使用 listen 的积压一次只允许一个客户端连接

c++ - boost 属性树 : Remove a node

c++ - recv() 始终返回 0

c++ - 套接字通信不同步