2

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

新一代 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++ 应用程序)如何知道商品是否已售出或发生故障?网络服务器是否返回 XML/JSON 输出进行验证?

就像,网络服务器返回这个;

// 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 拍卖行的开发商询问了这个问题,但他告诉我他不能分享这方面的信息。

那么,基本上,它是如何工作的?网络服务器的 JSON/XML 输出还是完全不同的东西来承载数据?

任何帮助,将不胜感激。

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

4

1 回答 1

0

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

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

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

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

编辑:

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

于 2012-09-08T04:26:51.840 回答