C ++ Yahtzee通过TCP

时间:2017-03-17 22:02:56

标签: c++ networking tcp

我一直在寻找StackOverflow在C ++中进行简单的网络TCP连接,而我似乎发现的只有Java,Python和C#。我知道Python或Java可以建立简单的连接,但主要是我用C ++编写一个简单的Yahtzee游戏,并希望了解C ++中的网络,因为我有大约一年的C ++知识,但不是对这些其他语言有很强的把握,但唉,我找不到适合我需要的简单设置。

我看到C++ Winsock P2P有一个设置,但它有一些对初学者来说很难的点。

在我的游戏中,我希望客户能够完成大部分工作(因为我听说这是一个更好的实现),但我不确定服务器在哪里接收输入并丢弃输出。我让客户滚动并显示卷。然后我假设它会完成所有三个卷,一旦你选择了在哪里使用你的卷,客户端就会在服务器上给评分表中的位置和骰子滚动。

我理解协议:你发送一些东西,服务器可以计算并发送回去,但我的问题是,我的客户端是否发送了一个数字(int choice = 12 显然是一个yahtzee )作为数据包消息然后发送一个骰子数组(int roll [5])供服务器计算进入的内容?或者客户应该做那项工作?这是我对发送和整体设置不了解的内容。

1 个答案:

答案 0 :(得分:0)

这个问题很难回答,因为这只是你决定如何做到的,而且这两种方法都有效。服务器客户端系统中需要考虑的一些常规方面:

  • 客户所做的事情对黑客攻击更加难以理解。 (例如,如果您在客户端上生成随机模具结果,则可能会更改代码并向服务器发送错误的数据,如12或其他任何内容)
  • 当您的用户编号变得非常大时,您在服务器上执行的操作会影响性能。让客户端这样做会让服务器处理其他东西的能力
  • 可能会限制您发送的信息量

    所以一般的经验法则是:让服务器做任何“危险”的事情,让客户做其他事情。 (虽然不幸的是,在这种情况下很多事情都很危险)

在你的情况下,我会让服务器掷骰子并将结果发送给用户。

  

我是否让我的客户端发送一个数字(int choice = 12显然为yahtzee)作为数据包消息然后发送一个骰子数组(int roll [5])供服务器计算进入的内容?或者客户应该这样做吗?

您无法发送一个空数组并让服务器填充它。请记住,这些可以是单独的计算机。他们无法访问彼此的记忆。你可以向服务器发送一个请求(也许是一个int常量),这样它就知道要做什么(滚动一个骰子,例如)  然后在网络上收听数据并解释例如服务器发送给你的下一个5个字节作为它滚动的骰子。