用CGI作为unity3d服务器存储数据

#include   <stdio.h>
#include   <stdlib.h>
#include   <string.h>
/*
<html>
 <head>
 <title>CGI Testing</title>
 </head>
 <body>
 <table width="200" height="180" border="0" style="font-size:12px">
 <div style="font-weight:bold; font-size:15px">Method: POST</div>
 <div>please input two number:<div>
 <form method="post" action="http://127.0.0.1:10086/cgi-bin/gt.cgi">
 <input type="txt" size="3" name="m">*
 <input type="txt" size="3" name="n">=
 <input type="submit" value="resu">
 </form>
 </td></tr>
 <tr><td><inputtype="button" value="Back Home"onclick=‘javascript:window.location="./index.html"‘></td></tr>
 </table>
 </body>
 </html>
*/

char InputBuffer[4096];  

int DecodeAndProcessData(char *input);    /*具体译码和处理数据,该函数代码略*/  

int main(int argc, char*argv[])
{
    int   ContentLength;   /*数据长度*/
    int   x;
    int   i;
    char   *p;
    char   *pRequestMethod;     /*   METHOD属性值   */
    setvbuf(stdin,NULL,_IONBF,0);     /*关闭stdin的缓冲*/
    printf("Content-type:text/html\n\n");     /*从stdout中输出,告诉Web服务器返回的信息类型*/
    printf("\n");                                           /*插入一个空行,结束头部信息*/
    //printf("<p>hello test</p>");
    /*   从环境变量REQUEST_METHOD中得到METHOD属性值   */  

    pRequestMethod = getenv("REQUEST_METHOD");
    if(pRequestMethod==NULL)
    {
        printf("<p>request = null</p>");
        return   0;
    }  

    if (strcmp(pRequestMethod,"POST")==0)
    {
        //printf("<p>OK the method is POST!\n</p>");
        p = getenv("CONTENT_LENGTH");     //从环境变量CONTENT_LENGTH中得到数据长度
        if (p!=NULL)
        {
            ContentLength = atoi(p);
        }
        else
        {
            ContentLength = 0;
        }
        if (ContentLength > sizeof(InputBuffer)-1)   {
            ContentLength = sizeof (InputBuffer) - 1;
        }  

        i   =   0;
        while (i < ContentLength)
        {                         //从stdin中得到Form数据
            x  = fgetc(stdin);
            if (x==EOF)
                break;
            InputBuffer[i++] = x;
        }
        InputBuffer[i] = ‘\0‘;
        ContentLength   =   i;
        DecodeAndProcessData(InputBuffer);                 //具体译码和处理数据,该函数代码略
    }
    else if (strcmp(pRequestMethod,"GET")==0)
    {
        //printf("<p>OK the method is GET!\n</p>");
        p = getenv("QUERY_STRING");     //从环境变量QUERY_STRING中得到Form数据
        if   (p!=NULL)
        {
            strncpy(InputBuffer,p,sizeof(InputBuffer));
            DecodeAndProcessData(InputBuffer);    //具体译码和处理数据,该函数代码略
        }
    }
    //printf("<HEAD><TITLE>Submitted OK</TITLE></HEAD>\n");//从stdout中输出返回信息
    //printf("<BODY>The information you supplied has been accepted.</BODY>\n");  

    return   0;
}  

int DecodeAndProcessData(char *input)    //具体译码和处理数据
{
    printf("%s",input);//输出到客户端
    // 补充具体操作
    /*int i;
    int len;
    len = (int)strlen(input);
    printf("data length:"+len);

    for(i = 0;i < len;i++)
    {
        printf(">>:%d\n",input[i]);
    }*/
    return 0;
}

unity3D 获取数据

using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    void Awake()
    {
        TestHttpSend();
    }
    IEnumerator SendPost(string _url, WWWForm _wForm)
    {
        WWW postData = new WWW(_url, _wForm);
        yield return postData;
        if (postData.error != null)
        {
            Debug.Log(postData.error);
        }
        else
        {
            Debug.Log("|"+postData.text+"|");
        }
    }
    public void TestHttpSend()
    {
        //测试POST方法
        WWWForm form = new WWWForm();
        form.AddField("int", "6");
        form.AddField("value", 2);

        /*
        byte[] b = new byte[2];
        b[0] = 1;
        b[1] = 2;
        form.AddBinaryData("myBytes", b,"file.dat","");
        */

        StartCoroutine(SendPost("http://127.0.0.1:10086/cgi-bin/gt.cgi", form));
    }
}

unity3D获取的数据

|
int=6&value=2|
时间: 2024-09-29 19:55:29

用CGI作为unity3d服务器存储数据的相关文章

服务器存储数据

高并发存储/读取数据(门户网站)存储数据: CPU接收处理数据 --> 内存中保存 --> 永久保存到磁盘 缓解存储压力读取数据: CPU接收处理数据 --> 内存中读取 <-- 磁盘中的热点数据 提升读取效率 低并发存储/读取数据(中小企业) 被用户访问时, 读多写少情况存储数据: CPU接收处理数据 --> 永久保存到磁盘读取数据: CPU接收处理数据 --> 内存中读取 <-- 磁盘中热点数据 提升读取效率 原文地址:https://blog.51cto.c

云服务器作为数据存储和监控

思考: 云主机是像本地pc一样,可以存储数据?例如将终端设备的数据通过gprs网络上传给云主机? 网站数据的访问:网站的数据查询是每次查询都发送一个get/post请求,然后本地pc通过网络将数据传出去,中间的复杂转换过程省略 云主机是不是就是网站的本地pc在网上,一个服务器给你开辟了一个账户(参考windows系统多账户)? 如果3成立的话,如何和云主机进行通信?厂商提供了api接口,可以通过网络将数据传上去?下图是阿里云服务给配置数据提供的接口.是不是还有上传数据的接口? 或者在云服务期厂商

Android存储数据方式(转)

转自http://www.cnblogs.com/hanyonglu/archive/2012/03/01/2374894.html   本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面将为大家一一详细介绍. 第一种: 使用Sha

QString内部仍采用UTF-16存储数据且不会改变(一共9种不同情况下的编码)

出处:https://blog.qt.io/cn/2012/05/16/source-code-must-be-utf-8-and-qstring-wants-it/ 但是注意,这只是QT运行(RunTime)过程中采用的编码,并不代表源码文件里也是这样的.恰恰相反,源码文件必须是UTF8,带不带BOM都可以.我认为,虽然存储在源代码里的中文字是UTF8,但是QT在编译过程中,遇到中文会立即转换成UTF-16从而对源码里的中文字符进行编码,并存储在EXE文件里(这里对编译器来说,都是静态字符,必

服务器的数据备份与恢复

虽然数据备份是一个关系着很多软.硬件技术的系统工程,但备份软件在整个数据备份过程中所担当的角色相当重要.它在一定程度上决定了数据备份的可行性和经 济实用性,也影响着硬件的发展.随着存储技术的发展,在SAN.NAS这些新的存储架构中,也发展出了LAN Free backup.Serverless Backup等全新的备份技术.下面简单予以介绍. 传统的备份与恢复模型主要特征是,每台特定主机服务器都配有专门的磁盘和磁带系统,每台主机都将自己的数据备份到本地连接的磁带机或磁带库上,这实际就是 DAS直

android开发中的5种存储数据方式

数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstance State保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整

MongoDB如何存储数据(转载)

原文地址:http://www.cnblogs.com/foxracle/p/3421893.html 想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files. Memeory-Mapped Files 下图展示了数据库是如何跟底层系统打交道的. 内存映射文件是OS通过mmap在内存中创建一个数据文件,这样就把文件映射到一个虚拟内存的区域. 虚拟内存对于进程来说,是一个物理内存的抽象,寻址空间大小为2^64 操作系统通过mmap来把进程所需

PMC获取HP Smart Array专利授权,扩大服务器存储方案市占率

PMC获取HP Smart Array专利授权 扩大服务器存储方案市占率 引领大数据连接.传送以及存储,提供创新半导体及软件解决方案的PMC公司(纳斯达克代码:PMCS)宣布已与惠普达成协议,将获得HP Smart Array的核心软件.固件及管理技术的专利授权.PMC将运用这些技术来为新老服务器存储及数据中心客户提供更优的系统方案.此外,该项交易也使PMC成为HP ProLiant Gen9及未来平台上的核心存储部件供应商. PMC预期,获得Smart Array技术及其相关专利(其中包括与R

服务器存储共享文件夹丢失数据恢复检测报告

服务器故障描述发生故障的服务器存储是DroboPro FS网络存储器,共有8块SAS硬盘,单盘容量2TB,raid5磁盘阵列. 在服务器的正常使用过程中有一个共享文件夹丢失,管理员进行简单检查后在北京数据恢复公司咨询服务器数据恢复相关问题,工程师随后上门对发生故障的服务器存储进行初检.数据恢复第一步:备份数据并初检按照数据恢复流程(基于数据的安全性以及可还原性),在对任何数据恢复之前需要对所有源数据做备份,以防万一其他原因导致数据无法再次恢复.使用dd命令或winhex工具将所有磁盘都镜像成文件