需要c#客户端连接到服务器与低延迟双向通信

本文关键字:延迟 双向通信 服务器 客户端 连接 需要 | 更新日期: 2023-09-27 17:50:12

我正在学习c#,只是需要一个正确的方向。我想在c#中构建一个客户端,与运行PHP/mySQL的服务器通信。这两者之间需要保持几乎不间断的沟通。这将是一个游戏,所以低延迟和双向通信。我不是在寻找一个确切的操作方法,而是我需要使用什么方法来连接两者,以获得最快和最可靠的连接。我读过其他人使用XML的文章,但如果经常使用,比如每秒使用一次或多次,似乎会变慢,但我可能完全错了。提前感谢!

需要c#客户端连接到服务器与低延迟双向通信

通常,与这些特征的通信是通过持久TCP连接进行的。c#在System.Net.Sockets命名空间中提供了许多现成的功能(从TcpClientTcpListener开始;如果你需要的话,还有更多的低级接口)。

这里重要的问题是:"服务器运行PHP"到底是什么意思?如果服务器只提供HTTP接口,那么您会发现不使用套接字而是使用WebClient或更低级的HttpWebRequest类进行通信更自然。

啊,用c#写游戏作为一种开始学习这门语言的方式!有多少人是这样开始的。

您定义了客户端-服务器协议了吗?我不是在谈论TCP和UDP, TomTom和Jon已经讨论过了。我的意思是,数据流会是什么样子?

数据包碎片是低延迟网络代码的敌人。了解MTU和分组碎片,Nagle算法等,并为以后实现网络代码时写下一些笔记。确保您计算了您想要发送的最小大小的数据包,它的报头可能有多大,以及该数据包可以容纳多大的有效负载。然后看看你是否能想出一个有效利用可用空间的协议。

通过优化服务器应用程序和/或将其移植到不同的语言,您可能会获得更多。仅仅因为你可以在服务器端使用PHP并不意味着你应该这样做。将显示有用信息的部分保留在网页浏览器中,并评估是否应该用另一种语言重写时间关键部分和游戏客户端通信部分。在处理实时游戏世界数据时,解释型语言的速度并不特别快。当然,我曾经使用POE在Perl中写过类似的东西,但最终它的性能要比我模仿的C代码差得多。

最后,我建议你看看XNA,因为它已经有很多这样的东西了。