Unity网络通讯的一些理解——弱联网http

来源:互联网 发布:安装美工刀片的圆规 编辑:程序博客网 时间:2024/06/05 08:41
网络通讯一般有强联网弱联网,强联网我们一般使用TCP或者UDP,弱联网则是最常用的HTTP。今天我们首先来说一说HTTP。
HTTP(
超文本传输协议HyperText Transfer Protocol
)是当前最广泛的网络协议。

首先,我们需要建立一个服务器,也就是一个网站。

以visual Studio2015为例,选择Visual C#下的Web,右边选择ASP.Net Web应用程序进行建立,模板选择Empty,勾选上Web API。




这时,我们可以看到,解决方案处已经自动生成好一些文件夹和文件。让我们点击运行一下,确认是否可以使用。

我们找到一个类,ValuesController,这里面是我们能够访问的网址以及可以返回给我们的值。





让我们试着访问一下,



没有问题。

接下来就是发布网站了,我们可以再右侧找到自己的网站点击右键点击发布。

如果之前没有配置文件可以点击下拉菜单->新建,然后创建自己的配置文件。发布方法改为“文件系统”,建议在目录下再创建一个文件夹,否则文件会散布在文件夹中,可能引起混乱。点击设置,将配置改为Release,然后点击发布。





当网站发布成功,我们便可以使用微软为我们提供的IIS来对网站进行部署。
打开IIS后我们可以点击网站,然后新建。此时会弹出一个界面。可以设置网站名称,物理路径,端口号。。。

网站名称,看个人喜好填写。物理路径选择之前我们发布的路径。修改端口号,默认为80的端口已经被占用,所以我们需要更换一个端口,从0~65535之间都可以。点击确认进行生成。


接下来进入正题了,如何在unity中进行请求。
首先,我看先看一下Get请求。Get请求是通过www类去请求HTTP,URL就是我们的网站地址,需要说的一点是HTTP是必须发出请求后才可以从服务器上获取资源,所以我们每需要一次,就需要请求一次,也可以一次把资源全部请求,但一般不会这样做。然后就是开启协程,等待请求完毕,然后接受返回的信息。

然后,我们看一下Post请求。Post请求会多一个WWWForm类,通过AddField方法来添加

参数,相当于Get方法路径后的“?id=1”。

private void PostURL(string URL, int id){    //定义一个表单    WWWForm form = new WWWForm();    //给表单添加值    form.AddField("id", 1);    WWW data = new WWW(URL, form);    StartCoroutine(Request(data));}
最后发一下实现协程的一个具体逻辑,供大家参考。
private IEnumerator Request(WWW data){    yield return data;    if (string.IsNullOrEmpty(data.error))    {       Debug.Log(data.text);    }    else    {        Debug.LogError(data.error);    }}


按照以上代码,我们会返回text文本信息,是我们请求的值,如果返回的是类,则会收到一个json字符串,json可以进行数据解析,得到我们要的数据。

最后,总结一下Get方式和Post方式的差异。使用Get方式效率要高,但是安全性会降低,Post方式则相反。所以使用哪个要由具体情况而定。







下次,我们看一下Unity网通通讯的强联网。