PHP Webserver与本地运行的C ++ exe集成?他们如何互动?

时间:2012-09-08 00:59:29

标签: php c++

我不确定它是如何处理的,所以我想问它。

新一代MMORPG游戏正在尝试在网络服务器上架设他们的交易站(拍卖)系统,因此玩家可以毫不费力地使用它而不是手机。

它的最后一个例子是激战2.基本上,系统的工作原理如下:

1. You login a locally running client.
2. Open up the auction house in game client. (like HTML frames in this case) 
3. The auction house connects to a webserver instead of sending packets to actual game server, like auctionhouse.guildwars2.com, which is also accessable via browser.
4. You want to sell your Sword, if the auction house successfully takes the Sword, it gets deleted from user inventory (client) and server, hence, client somehow gets informed by webserver reply.

所以...我在猜... 本地运行的客户端(C ++应用程序)如何知道项目是否已售出或是否出现故障? Web服务器是否返回XML / JSON输出以进行验证?

就像,webserver返回这个;

// XML reply 
<auctionResponse>
   <itemId>184818478A</itemId>
   <success>Successful</success>
   <verifyKey>AG8918ADHWDHA</verifyKey>
</auctionResponse>

并且客户端检查它;

if(auctionHouse.auctionResponse == 'Successful')
{
     if(auctionHouse.auctionResponse == getVerifyKeyFromServer()) //so the server confirms
     {
           DeleteFromInventory(auctionHouse.itemId); //item will be removed from user inventory
     }
}

我已经向GW2拍卖行的开发者询问了这个问题,但是他告诉我他不能分享这方面的信息。

所以,基本上,它是如何工作的? Web服务器的JSON / XML输出或完全不同的东西可以传输数据吗?

任何帮助都将不胜感激。

聚苯乙烯。它不是TCP连接。拍卖行本身在端口80上运行,后端用PHP语言编码。

1 个答案:

答案 0 :(得分:0)

虽然我不知道他们是如何具体做的,但我会定期编写类似的应用程序。以下是它通常的工作原理:

PHP可以使用proc_open()来管道正在执行的进程。这意味着您可以从PHP中将命令发送到另一个应用程序,并在PHP脚本中使用结果。这包括用任何东西写的自定义exe。

另一个选项是在localhost或任何其他机器上运行的服务器应用程序,其中PHP使用CURL与该服务器通信。结果可以用JSON,XML,纯文本等方式发送......

这两个选项都允许PHP Web服务器在端口80上运行。

编辑:

我怀疑您下载的客户端应用程序正在与服务器通信,可能是与Web应用程序共享同一数据库的服务器。因此,当您在客户端购买某些东西时,其服务器上的数据库会更新,然后他们的Web应用程序就会拥有更新的信息。