PHP Web服务器集成到本地运行的C++exe?他们是如何互动的


PHP Webserver integration to a locally running C++ exe? How do they interact?

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

新一代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返回this;

// 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还是完全不同的东西来承载数据?

如有任何帮助,我们将不胜感激。

Ps。它不是TCP连接。拍卖行本身运行在80端口上,后端使用PHP等语言进行编码。

虽然我不知道他们具体是怎么做的,但我会定期编写类似的应用程序。以下是它的一般工作方式:

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

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

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

编辑:

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