从C#应用程序获取HeartBeat并将其发布到网站

时间:2013-11-30 04:07:17

标签: php html mysql heartbeat

我有一个用C#编写的Minecraft软件,我想向我的网站发送心跳。我已经找到了发送已经写过的节拍的方法。

 if (Server.Uri == null) return;
        string uri = "http://GemsCraft.comli.com/Heartbeat.php";
        // create a request
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.Method = "POST";

            // turn request string into a byte stream
            byte[] postBytes = Encoding.ASCII.GetBytes(string.Format("ServerName={0}&Url={1}&Players={2}&MaxPlayers={3}&Uptime={4}",
                             Uri.EscapeDataString(ConfigKey.ServerName.GetString()),
                             Server.Uri,
                             Server.Players.Length,
                             ConfigKey.MaxPlayers.GetInt(),
                             DateTime.UtcNow.Subtract(Server.StartTime).TotalMinutes));

            request.ContentType = "application/x-www-form-urlencoded";
            request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
            request.ContentLength = postBytes.Length;
            request.Timeout = 5000;
            Stream requestStream = request.GetRequestStream();

            // send it
            requestStream.Write(postBytes, 0, postBytes.Length);
            requestStream.Flush();
            requestStream.Close();
            /* try
             {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Logger.LogToConsole(new StreamReader(response.GetResponseStream()).ReadToEnd());
                Logger.LogToConsole(response.StatusCode + "\n");
             }
             catch (Exception ex)
             {
                 Logger.LogToConsole("" + ex);
             }*/
        }

现在,我希望能够在PHP中检索心跳,将其上传到SQL数据库,然后在将显示在网页上的表中显示每个用户的服务器

我该怎么做?

2 个答案:

答案 0 :(得分:1)

portforwardpodcast的答案不太适合您的目的,这是一个让您思考的过程

服务器访问以下页面:heartbeat.php?port = 25565& maxplayers = 25& players = 2& name = Cheese_Pizza_Palace

您的PHP脚本将执行以下操作...

  • 浏览每个值,确保它们是您想要的所有类型(整数/字符串)
  • 连接数据库
  • 更新数据库中的服务器(如果已存在),如果不存在则创建
  • 返回一些值,以便服务器知道它已成功完成。

并显示服务器

  • 获取所有“有效”服务器
  • 循环浏览并显示每一个。

你需要弄清楚的事情:

  • 如何确定正常运行时间
  • 如何确定“有效”服务器
  • 如何更新/创建MySQL条目
  • 如何(正确)连接到数据库。我建议使用PDO,因为你正在使用PHP。这有点难以学习,但它比直接编写查询更安全。
  • 如何遍历所有GET变量。

好狩猎!

答案 1 :(得分:0)

我会创建一个简单的php页面接受一个get变量。类似www.site.com/beat.php?lasttime=123456&serverid=1的内容,其中数字为unix timestamp。然后,您需要重新使用c#在网站上执行简单的get请求。最后你的php应插入一个mysql表,其中包含idtimestampserver_id等列。

首先,您需要从请求中提取数据。 php中的$ _REQUEST变量很好,因为它适用于GET和POST:

http://php.net/manual/en/reserved.variables.request.php

从var_dump开始或回显您想要的字段。一旦您可以将所需数据转换为变量,就可以完成第一部分。对于下一部分,您需要在MySQL中创建数据库和表。最好的工具是phpmyadmin。如果您有像godaddy(或其他人)这样的主机,您可以从控制面板获取此信息。如果不是,您可能需要自己安装上传phpmyadmin文件。这是一个非常简单的工具:

http://www.youtube.com/watch?v=xxQSFHADUIY

一旦您的数据库具有正确的列,您需要插入php文件中的数据。这个页面应该有所帮助:

http://www.w3schools.com/php/php_mysql_insert.asp