c# - 2客户端程序交易变量信息——有更好的方法吗?
本文关键字:更好 方法 信息 客户端 程序 变量 交易 | 更新日期: 2023-09-27 17:49:15
我正在尝试将玩家信息从我的游戏发送到我的网络客户端,然后发送到服务器。
目前,ClientNetwork -> ClientGame关系由XML文件保存。它们以非常高的速度来回读/写。如果只使用一个XML文件进行此交易,那么其中一个文件有时会"独占"该文件,当其中一个无法读取时,因为另一个正在恶意地写入和重写,从而造成某种延迟。
为了解决这个问题,我有两个我的XML文件。如果不能读取其中一个,就读取另一个。从理论上讲,他们应该同时使用这两种方法,因为从一种方法到另一种方法需要权衡。未达到标准
但是我的主要问题是XML的一般用法非常草率,几十个try-catch语句以确保它们都很高兴(我个人最喜欢的是,try-catch中的try-catch——WE HAVE to GO DEEPER)
我只是好奇是否有更好的方法来做到这一点。我需要一个静态点的变量,可以由两个客户端程序访问。我怕有人会说数据库…
我想对任何正在研究这个问题并偶然发现这个页面的人说,共享内存是很棒的。虽然我必须将所有字符串转换为字符,然后转换为字节,并逐一读取它们,但总的来说,这比处理不能同时读取/写入同一文件的事情要好得多。如果您希望进一步了解它,而不仅仅是使用它,请访问此链接,它解释了许多消息传递类型以及如何使用它们。
有!
您要查找的术语是进程间通信-同一机器上的两个进程之间的通信。
允许同一机器上的两个进程相互通信的方法有很多,包括:
- 命名管道 共享内存
- 套接字 HTTP
- WCF教程-基本进程间通信
- 多对一本地IPC使用WCF和NetNamedPipeBinding
另外,关于WCF的一个简洁的事情是,你也可以使用它来在不同的机器之间进行通信,只需将"传输"(即通信方法)更改为在网络上工作的方式,(例如HTTP)。
如果你的目标是。net 2.0,那么你应该看看。net远程或web服务。
一个简单的TCP流跳出来。让网络客户端打开一个侦听TCP套接字,并让游戏连接到网络客户端。如果愿意,可以继续发送已经编写的XML数据。
我同意David提出的tcp/ip套接字答案。我将简单地将数据提交到本地pc上的套接字,并让其他应用程序侦听套接字。使用这种方法可以轻松快速地传输数据,并且无论您针对的是哪个版本的。net框架,它都可以工作。