C# 服务器(不是 Web 服务器)和 PHP 之间的数据交换

Posted

技术标签:

【中文标题】C# 服务器(不是 Web 服务器)和 PHP 之间的数据交换【英文标题】:Dataexchange between C# Server (Not Webserver) and PHP 【发布时间】:2011-01-13 02:18:01 【问题描述】:

我有一个持续运行的服务器程序(Linux 上的 C#/.NET 2.0 单声道),我想从 php 脚本连接到它以在网站上显示状态信息。

目的是创建一个(某种)实时浏览器游戏(无 Flash,无 Silverlight),我想使用 PHP 脚本从 C# GameServer 获取必要的信息,即当前单位位置、玩家资源、分数、可见地图等。信息每秒更新一次,甚至更快,但操作可能需要数小时甚至数天(即研究可能需要一周才能完成)

是否有任何库可以让我在程序的这两个部分之间轻松传输信息?

我的想法:

使用嵌入式 WebServer 并通过 PHPs SoapClient 进行连接。 有没有人使用过免费的嵌入式 WebServer(免费,因为游戏是免费的)?

Socket 编程和传输 JSON/XML/SOAP 块。 对于 PHP/C# 的这种类型的网络通信,是否有任何简单的库可以自动从套接字读取,直到消息完成,然后将事件发送到游戏控制器?

只需将每个用户和全局数据转储到数据库或 xml 文件中 最简单的解决方案,但恕我直言,可扩展性不够。

你有什么建议?

提前致谢。

其他有类似问题的补充:

在发布此问题后进行更多研究后,我偶然发现 .NET System.Net.HttpListener 甚至受单声道支持,所以我会 现在用这个。它似乎拥有嵌入 WebServer 所需的一切 进入您正在运行的服务器。


【问题讨论】:

【参考方案1】:

我会使用一个简单的嵌入式网络服务器,只需使用 PHP Curl 扩展与它进行交互http://php.net/manual/en/book.curl.php。对于嵌入式网络服务器,我会开始寻找 codeplex,例如http://www.codeplex.com/webserver.

【讨论】:

您知道易于集成的嵌入式网络服务器吗?我只找到了codeplex.com/webserver,而且那个选项似乎太多了,仍然算作“简单”,而且对于这个项目来说可能有点矫枉过正。 也许这个***链接对***.com/questions/458036/…有帮助,我看到那里也提到了这个嵌入式服务器:runkayak.com 谢谢,看起来正是我需要的。【参考方案2】:

只需在 C# 服务器上运行一个简单的服务器,通过套接字从您的客户端 (PHP) 连接到它。您必须为交互编写“规则”,但可以避免 JSON/SOAP 等带来的开销。另一个解决方案是使用 XMLRPC 服务器。

【讨论】:

是否有任何(好的和免费的)库可以做到这一点?我不想写整个套接字的东西,因为它可能非常复杂(检查丢失的连接、超时、异步读/写、多个并行连接......)而且它不在我真正想要的范围内为这个项目创建。

以上是关于C# 服务器(不是 Web 服务器)和 PHP 之间的数据交换的主要内容,如果未能解决你的问题,请参考以下文章

Web服务器之iis,apache,tomcat三者之间的比较

C#:如何以编程方式检查 Web 服务是不是已启动并正在运行?

PHP服务之FASTCGI原理及实现案例

使用C#开发HTTP服务器系列之Hello World

PHP、Java Servlet 或 C# WebService 作为 NAT 中间服务器

Linux之Web服务Httpd服务配置之一