困境游戏(http://en.wikipedia.org/wiki/Prisoner%27s_dilemma).
基本上,这涉及:
>游戏开始(第1轮).
>玩家1选择合作或背叛.
>玩家2选择合作或背叛.
>然后显示彼此的决定
>第2轮开始
>等
>接受传入tcp / ip连接的服务器类
> Gui客户(单独计划)
>对于每个连接(最多2个),服务器将创建一个新的ConnectedClient类.该课程将包含两个玩家的机器/身份的详细信息.
> Server类和ConnectedClient类将连接/订阅每个事件,以便它们可以在例如服务器指令准备好传输给玩家,或者玩家将其输入传输到服务器.
我不确定最好的approch是使用单个线程来做或工作,还是让它多线程.单线程显然会更容易,但我不确定是否可能出现这种情况 – 我从未在需要TCP / IP连接之前创建应用程序,而且我不确定您是否可以侦听两个传入连接一个线程.
我在网上找到了以下指南,但它似乎在两个线程上打开了两个客户端,它们直接相互通信 – 绕过服务器(我需要控制游戏逻辑):http://www.codeproject.com/Articles/429144/Simple-Instant-Messenger-with-SSL-Encryption-in-Cs
我非常感兴趣,并且对如何实现应用程序(主要是服务器类)的任何建议表示感谢.
我希望我已经清楚地解释了我的意图.提前致谢.
解决方法
所以,我的第二个建议是看WCF技术.如果你之前没有使用它,请不要害怕.这并不困难.如果你准备好为你的应用程序使用套接字,你可以肯定地处理WCF.对于您的任务,您可以使用任何WCF教程从头开始创建1-2小时的基本通信.
所以,我会创建一个服务器WCF服务,它将包含一些包含业务逻辑的API函数.它可以托管在Windows服务,IIS或控制台应用程序中.并且您的客户端将使用该WCF服务,从项目中的另一个本地类调用它们的函数. WCF也可以帮助你做你想要的事件(虽然这是一个更高级的主题).你甚至可以忘记这里的线程,大多数事情都是开箱即用的.