加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 网络客户端 – 服务器应用程序建议

发布时间:2020-12-15 18:31:47 所属栏目:百科 来源:网络整理
导读:我正在尝试设计一个应用程序,允许网络上的两个用户玩囚犯 困境游戏(http://en.wikipedia.org/wiki/Prisoner%27s_dilemma). 基本上,这涉及: 游戏开始(第1轮). 玩家1选择合作或背叛. 玩家2选择合作或背叛. 然后显示彼此的决定 第2轮开始 等 我做了一些思考和
我正在尝试设计一个应用程序,允许网络上的两个用户玩囚犯

困境游戏(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

我非常感兴趣,并且对如何实现应用程序(主要是服务器类)的任何建议表示感谢.

我希望我已经清楚地解释了我的意图.提前致谢.

解决方法

我的第一个建议是忘记TCP / IP和套接字.你绝对可以用这个技术堆栈来做到这一点,但是你也会在实现你想要的所有东西时遇到很多麻烦.原因是这类任务的技术水平太低.我会选择tcp / ip和socket作为学术兴趣,或者如果我需要对通信进行巨大的控制,或者我有非常高的性能要求.

所以,我的第二个建议是看WCF技术.如果你之前没有使用它,请不要害怕.这并不困难.如果你准备好为你的应用程序使用套接字,你可以肯定地处理WCF.对于您的任务,您可以使用任何WCF教程从头开始创建1-2小时的基本通信.

所以,我会创建一个服务器WCF服务,它将包含一些包含业务逻辑的API函数.它可以托管在Windows服务,IIS或控制台应用程序中.并且您的客户端将使用该WCF服务,从项目中的另一个本地类调用它们的函数. WCF也可以帮助你做你想要的事件(虽然这是一个更高级的主题).你甚至可以忘记这里的线程,大多数事情都是开箱即用的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读