最新公告
  • 29分享网为网络创业者提供小本创业、兼职赚钱、零成本项目、新媒体运营等方面资源。
  • 基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    前言

    Java 网络编程,首先介绍了一些网络方面的基本知识。重点介绍了JSON 数据交换格式,由于 Java 官方没有提供 JSON 解码和编码库,需要使用第三方库。使用方法 URL 访问互联网资源。

    网络编程是非常重要的技术。Java SE 提供 java.net 包,其中包含了网络编程所需要的最基础的一些类和接口。这些类型和接口面向两个不同的层次:基于 Socket 低层次网络编程和基于 URL 的高层次网络编程,所谓高低层次就是通信协议议的高低底层次,Socket 采用 TCP、UDP 等协议,这些协议属于低层次的通信协议;URL采用 HTTP 和 HTTPS 这些属于高层次的通信协议。低层次网络编程,因为它面向底层,所以虽然复杂,但是“低层次网络编程”并不等于它功能不强大。恰恰相反,正因为层次低,Socket编程与基于URL的高层次网络编程比较,能够提供更强大的功能和更灵活的控制,但是要更复杂一些。

    网络基础

    网络编程需要程序员掌握一下基础的网络知识,这一节先介绍一些网络基础知识。

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    网络结构

    首先了解一下网络结构,网络结构是网络的构建方式,目前流行的有客户端服务器结构网络和对等结构网络。

    1. 客户端服务器结构网络

    客户端服务器(Client Server,缩写 C/S)结构网络,是一种主从结构网络。如图 17-1 所示,服务器一般处于等待状态,如果有客户端请求,服务器响应请求建立连接提供服务。服务器是被动的,有点像在餐厅吃饭时候的服务员。而客户端是主动的,像在餐厅吃饭的顾客。

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    事实上,生活中很多网络服务都采用这种结构。例如:Web 服务、文件传输服务和邮件服务等。虽然它们存在的目的不一样,但基本结构是一样的。这种网络结构与设备类型无关,服务器不一定是电脑,也可能是手机等移动设备。

    2. 对等结构网络

    对等结构网络也叫点对点网络(Peer to Peer,缩写 P2P),每个节点之间是对等的。它们如图 17-2 所示,每个节点既是服务器又是客户端,这种结构有点像吃自助餐。

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    对等结构网络分布范围比较小。通常在一间办公室或一个家庭内,因此它非常适合于移动设备间的网络通讯,网络链路层是由蓝牙和 WiFi 实现。

    TCP/IP 协议

    网络通信会用到协议,其中 TCP/IP 协议是非常重要的。TCP/IP 协议是由 IP 和 TCP 两个协议构成的,IP(Internet Protocol)协议是一种低级的路由协议,它将数据拆分成许多小的数据包中,并通过网络将它们发送到某一特定地址,但无法保证都所有包都抵达目的地,也不能保证包的顺序。

    由于 IP 协议传输数据的不安全性,在网络通信时还需要 TCP 协议,传输控制协议(Transmission Control Protocol,TCP)是一种高层次的协议,面向连接的可靠数据传输协议议,如果有些数据包没有收到会重发,并对数据包内容准确性检查并保证数据包顺序,所以以该协议保证数据包能够安全地按照发送时顺序送达目的地。

    JSON 文档结构

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。所谓轻量级,是与XML 文档结构相比而言的,描述项目的字符少,所以描述相同数据所需的字符个数要少,那么传输速度就会提高,而流量却会减少。

    如果留言条采用 JSON 描述,可以设计成下面的样子:

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    由于 Web 和移动平台开发对流量的要求是要尽可能少,对速度的要求是要尽可能快,轻量级的数据交换格式 JSON 就成为理想的数据交换格式。

    构成 JSON 文档的两种结构为对象和数组。对象是“名称-值”对集合,它类似于 Java中 Map 类型,而数组是一连串元素的集合。

    对象是一个无序的“名称/值”对集合,一个对象以{(左括号)开始,}(右括号)结束。每个“名称”后跟一个:(冒号),“名称-值”之间使用,(逗号)分隔。JSON 对象的语法表如图

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    JSON 对象的语法表

    下面是一个 JSON 对象的例子:

    {
    "name":"a.htm",
    "size":345,
    "saved":true
    }

    数组是值得有序集合,以[(左中括号)开始,](右中括号)结束,值之间使用,(逗号)分隔。JSON 数组的语法表如图

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    JSON 数组的语法表

    下面是一个 JSON 数组的例子:

    ["text","html","css"]

    在数组中,值可以是双引号括起来的字符串、数值、true、false、null、对象或者数组,而且这些结构可以嵌套。数组中值得 JSON 语法结构如图

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    JSON 值的语法结构图

    使用第三方 JSON 库

    由于目前 Java 官方没有提供 JSON 编码和解码是所需要的类库,所以需要使用第三方JSON 库,笔者推荐 JSON-java 库,JSON-java 库提供源代码,最重要的是不依赖于其他地方三方库,需要再起找其他的库了。

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    JSON-java 源代码文件

    将 JSON-java 库源代码文件添加到工程中,需要两个步骤发布:

    需要源码的小伙伴可以转发+点赞+关注 私信【666】获取

    1. 创建 org.json 包

    JSON-java 库中的源代码文件都隶属于 org.json 包,从图 可见源文件夹下没有与包对应的目录结构,为此需要在 Eclipse 的项目中创建 org.json 包。选择 Eclipse 项目的 src源代码文件夹,右击菜单中选择“新建”→“包”,弹出新建包对话框,如图所示在名称的中输入 org.json,然后单击完成,就成功创建 org.json 包。

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    在 Eclipse 中创建包

    2. 复制源代码文件

    org.json 包创建好后,需要将 JSON-java 文件夹中的源代码文件复制到 Eclipse 工程的 org.json 包中。由于操作系统的资源管理器与 Eclipse 工具之间互相复制粘贴,Eclipse中复制和粘贴操作的快捷键和右键菜单与操作系统下完全一样。如图 17-10 所示,将源代码文件复制到 Eclipse 中。

    基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    复制源代码文件到 Eclipse 工程

    JSON 数据编码和解码

    JSON 和 XML 真正在进行数据交换的时候,它们存在的形式就是一个很长的字符串,这个字符串在网络中传输或者存储于磁盘等介质中。在传输和存储之前需要把 JSON 对象转换成为字符串才能传输和存储,这个过程称之为“编码”过程。接收方需要将接收到的字符串转换成为 JSON 对象,这个过程称之为“解码”过程。编码和解码过程就像发电报一样发送方把语言变成能够传输的符号,而接收时要将符号转换成为能够看懂的语言。

    下面具体介绍一下 JSON 数据编码和解码过程。

    1. 编码

    如果想获得如下这样 JSON 字符串:

    {"name": "tony", "age": 30, "a": [1, 3]}

    应该如何实现编码过程,参考代码如下:

    try {
    JSONObject jsonObject = new JSONObject(); ①
    jsonObject.put("name", "tony"); ②
    jsonObject.put("age", 30); ③
    JSONArray jsonArray = new JSONArray(); ④
    jsonArray.put(1).put(3); ⑤
    jsonObject.put("a", jsonArray); ⑥
    //编码完成
    System.out.println(jsonObject.toString()); ⑦
    } catch (JSONException e) {
    e.printStackTrace();
    }

    上述代码第①行是创建 JSONObject(JSON 对象),代码第②行和第③行是把 JSON 数据项添加到 JSON 对象 jsonObject 中,代码第④行创建 JSONArray(JSON 数组),代码第⑤行是向 JSON 数组中添加 1 和 3 两个元素。代码第⑥是将 JSON 数组 jsonArray 作为 JSON对象 jsonObject 的数据项添加到 JSON 对象。

    代码第⑦行 jsonObject.toString()是将 JSON 对象转换为字符串,真正完成了 JSON 编码过程。

    2. 解码

    解码过程是编码反向操作,如果有如下 JSON 字符串:

    {"name":"tony", "age":30, "a":[1, 3]}

    那么如何把握这个 JSON 字符串解码成 JSON 对象或数组,参考代码如下:

    String jsonString = "{\"name\":\"tony\", \"age\":30, \"a\":[1, 3]}"; ①
    try {
      JSONObject jsonObject = new JSONObject(jsonString); ②
    	String name = jsonObject.getString("name"); ③
    	System.out.println("name : " + name);
    	int age = jsonObject.getInt("age");
    	System.out.println("age : " + age);
    	JSONArray jsonArray = jsonObject.getJSONArray("a"); ④
    	int n1 = jsonArray.getInt(0); ⑤
    	System.out.println("数组a第一个元素 : " + n1);
    	int n2 = jsonArray.getInt(1);
    	System.out.println("数组a第二个元素 : " + n2);
    } catch (JSONException e) {
    		e.printStackTrace();
    }

    上述代码第①行是声明一个 JSON 字符串,网络通信过程中 JSON 字符串是从服务器返回的。代码第②行通过 JSON 字符串创建 JSON 对象,这个过程事实上就是 JSON 字符串解析过程,如果能够成功地创建 JSON 对象,说明解析成功,如果发生异常则说明解析失败。

    代码第③行从 JSON 对象中按照名称取出 JSON 中对应的数据。代码第④行是取出一个 JSON 数组对象,代码第⑤行取出 JSON 数组第一个元素。


    关注微信『29分享网』

    第一时间了解最新网络动态关注博主不迷路~

    1. 本站所有资源来源于用户上传和互联网,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务,除了本站原创售价资源都有技术服务,请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
    29分享网-提供精准引流推广和暴利行业的冷门项目及偏门生意 » 基础神文,入门:网络编程,只看这篇文章,网络编程基础知识

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    29分享网
    一个高级程序员模板开发平台