10-Java 网络通信
(一) Java中的XML操作
1、XML数据格式简介:
(1)XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
(2)特点:
XML是一种标记语言,很类似HTML。
XML的设计宗旨是传输数据,而非显示数据。
XML标签没有被预定义,您需要自行定义标签。
XML被设计为具有自我描述性。
XML是W3C的推荐标准。
(3)XML与HTML的区别:
A、XML不是HTML的替代
B、XML和HTML为不同的目的而设计:
XML被设计为传输和存储数据,其焦点是数据的内容。
HTML被设计用来显示数据,其焦点是数据的外观。
HTML旨在显示信息,而XML旨在传输信息。
(4)XML的特点:
A、XML仅仅是纯文本。它没啥特别,仅仅是纯文本而已。有能力处理纯文本的软件都可以处理XML。不过,能够读懂XML的应用程序可以有针对性地处理XML的标签。标签的功能性意义依赖于应用程序的特性。
B、XML没有预定义的标签:在HTML中使用的标签(以及HTML的结构)是预定义的。HTML文档只使用在标准中定义过的标签(比如<p>\<h1>等等)。
XML允许创作者定义自己的标签和自己的文档结构。
(5)XML的语法规则:在XML中,省略关闭标签是非法的,所有元素都必须有关闭标签。
A、XML标签对大小写敏感
B、XML必须正确地嵌套
C、XML文档必须有根元素
D、XML的属性须加引号
E、XML中,空格会被保留。
(6)
2、使用Java读取XML数据(解码器下载失败?!)
3、使用Java创建XML数据
4、使用Dom4j操作XML数据
(二)Java中的JSON操作
1、JSON数据格式简介
(1)JSON:JavaScript 对象表示法(JavaScript Object Notation)
JSON是存储和交换文本信息的语法。
JSON是轻量级的文本数据交换格式;
JSON独立于语言和平台;
JSON具有自我描述性,更易理解。
(2)JSON与XML的区别:
类似XML,比XML更小、更快、更易解析。
没有结束标签
更短
读写的速度更快
使用数组
不使用保留字
(3)JSON的语法:
A、JSON语法是JavaScript 对象中表示语法的子集
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
B、JSON值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true 或false)、数组(在方括号中)、对象(在花括号中)、null
C、JSON对象:在花括号中书写,对象可以包含多个名称或值对:
{ “first name”:“John”,“lastName”:“Doe”}
D、JSON数组:在方括号中书写,数组可包含多个对象:
{ “employees”:[
{ “first name”:“John”,“lastName”:“Doe”} ,
{ “first name”:“Ja”,“lastName”:“cv”} ]
}
2、使用 Java 读取 JSON 数据
3、使用Java创建JSON数据
(三)Java中的HTTP通信
1、使用 Http 的 Get 方式读取网络数据
- public class TestGet {
- public static void main(String[] args) {
- new ReadByGet().start();
- }
- static class ReadByGet extends Thread{
- @Override
- public void run() {
- try {
- URL url=new URL("http://fanyi.youdao.com/openapi.do?keyfrom=shenxiaolin&key=956894252&type=data&doctype=xml&version=1.1&q=welcome");//xml为doctype,可选
这里写完,会有异常,surround try/catch一下。
这个URL获得:fanyi.youdao.com选择下方的,有道翻译API,调用数据接口。申请KEY
- URLConnection connection=url.openConnection();
- InputStream is=connection.getInputStream();
- InputStreamReader isr=new InputStreamReader(is,"UTF-8");//为防止乱码
- BufferedReader br=new BufferedReader(isr);
- String line;
- StringBuilder builder=new StringBuilder();
- while ((line=br.readLine())!=null) {
- builder.append(line);
- }
- br.close();
- isr.close();
- is.close();
- System.out.println(builder.toString());
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
2、使用 Http 的 Post 方式与网络交互通信
3、使用HttpClient进行Get方式通信
4、使用 HttpClient 进行 Post 方式通信
(四)Java 中的Socket通信
1、Socket 介绍
(1)Socket 又称“套接字”,应用程序常通过“套接字”向网络发出请求或者应答网络请求。
(2)Socket链接的建立过程
服务器监听、客户端发出请求、建立链接、通信
(3)Socket 特点:
A、Socket 基于TCP链接,数据传输有保障。
B、Socket 适用于建立长时间链接,不像Http,请求执行完之后就随机关闭。
C、Socket 编程通常应用于即时通讯。
2、ServerSocket 的建立与使用
- public class MyServerSocket {
- public static void main(String[] args) {
- try {
- ServerSocket serverSocket=new ServerSocket(12345);
- //block。。。main会阻塞
- Socket socket =serverSocket.accept();
- //建立连接
- JOptionPane.showMessageDialog(null, "有客户端链接到本机的12345端口。");
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
在服务器上输入:127.0.0.1:12345。会弹出一个会话窗口:有客户端链接到本机的12345。
3、使用 ServerSocket 建立聊天服务器-1.
(1)ChatSocket.java :
- package com.jikexueyuan.testmyserversocket.main;
- import java.io.BufferedWriter;
- import java.io.IOException;
- import java.io.OutputStreamWriter;
- import java.net.Socket;
- public class ChatSocket extends Thread {
- Socket socket;
- public ChatSocket(Socket s) {
- this.socket=s;
- }
- @Override
- public void run() {
- try {
- socket.getOutputStream();
- BufferedWriter bw=new
- BufferedWriter(
- new OutputStreamWriter(socket.getOutputStream()));
- int count=0;
- while (true) {
- bw.write("loop:"+count);
- sleep(1000);
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
(2)ServerLisener.java :
- package com.jikexueyuan.testmyserversocket.main;
- import java.io.IOException;
- import java.net.ServerSocket;
- import java.net.Socket;
- import javax.swing.JOptionPane;
- public class ServerLisener extends Thread {
- @Override
- public void run() {
- try {
- ServerSocket serverSocket=new ServerSocket(12345);
- while (true) {
- //block。。。main会阻塞
- Socket socket =serverSocket.accept();
- //建立连接
- JOptionPane.showMessageDialog(null, "有客户端链接到本机的12345端口。");
- //将Socket传递给新的线程
- new ChatSocket(socket).start();
- }
- } catch (IOException e) {
- e.printStackTrace();
(3)MyserverSocket.java :(主方法在此)
- package com.jikexueyuan.testmyserversocket.main;
- public class MyServerSocket {
- public static void main(String[] args) {
- new ServerLisener().start();
- }
4、使用 ServerSocket 建立聊天服务器-2
5、使用 Java 创建聊天客户端-1
6、使用Java创建聊天客户端-2.
10-Java 网络通信的更多相关文章
- Java程序员从笨鸟到菜鸟之(十三)java网络通信编程
本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 首先声明一下,刚开始学习java网络通信编程就对他有一种畏惧感,因为自己对网络一窍不通,所 ...
- Java-Runoob-高级教程-实例-方法:10. Java 实例 – 标签(Label)
ylbtech-Java-Runoob-高级教程-实例-方法:10. Java 实例 – 标签(Label) 1.返回顶部 1. Java 实例 - 标签(Label) Java 实例 Java 中 ...
- Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un
ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素 Java 实例 以下实例 ...
- ArcGIS Server 10 Java 版的Rest服务的部署方法
使用ArcGIS Server 10 Java版发布GIS服务,当使用ArcGIS Manager创建好服务后,然后打开“ArcGIS Services Directory”的链接时发现网页报出了找不 ...
- Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等-uncheck
ylbtech-Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等 1.返回顶部 1. Java 实例 - 测试两个字符串区域是否相等 Java ...
- java网络通信:异步非阻塞I/O (NIO)
转: java网络通信:异步非阻塞I/O (NIO) 首先是channel,是一个双向的全双工的通道,可同时读写,而输入输出流都是单工的,要么读要么写.Channel分为两大类,分别是用于网络数据的S ...
- ArcGIS Server 10 Java 版的Rest服务手动配置方法
Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...
- Java网络通信初步认知
本文转载自:http://wing011203.cnblogs.com/ 在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信.UDP通信.多播以及NIO. TCP连接 TCP的基础 ...
- Top 10 Java Debugging Tips with Eclipse
In this tutorial we will see about debugging java applications using Eclipse. Debugging helps us to ...
- JavaEE Tutorials (10) - Java持久化查询语言
10.1查询语言术语14010.2使用Java持久化查询语言创建查询141 10.2.1查询中的命名参数142 10.2.2查询中的位置参数14210.3简化的查询语言语法142 10.3.1选择语句 ...
随机推荐
- STM32学习笔记(十) CAN通讯测试(环回模式)
1.CAN通讯的理解 想学习CAN通讯,那么要对通讯协议有一定的认知.通讯协议是指通信双方对数据传送控制的一种约定.约定中包括对数据格式,同步方式,传输速度,传送步骤,检纠错方式以及控制字符定义等问题 ...
- datatables设置解析
条信息" "sSearch":"搜索" 基本的命令 aaSorting:参数是个数组 [[],[]]单独定义每一列的排序方式 aaSortingFi ...
- ionic cordova
ionic cordova 打包 文章 http://blog.csdn.net/i348018533/article/details/47258449 http://www.cnblogs.com/ ...
- spring boot初探
又被领导鄙视了,说让先把程序跑起来,再去研究深层次的东西.. 我又一次没有学会走就要开始跑了..说干就干 eclipse mars下载 新建maven project 加依赖 <dependen ...
- 6/12 Sprint2 看板和燃尽图
- 51nod 1158 全是1的最大子矩阵
题目链接:51nod 1158 全是1的最大子矩阵 题目分类是单调栈,我这里直接用与解最大子矩阵类似的办法水过了... #include<cstdio> #include<cstri ...
- Hadoop技术内幕-第一章 阅读原代码前的准备
1.1 源代码学习环境 1.1.1 基础软件的下载 JDK-http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads ...
- github 使用教程初级版
github 是一个基于 git 的代码托管平台,付费用户可以建私人仓库,免费用户只能使用公共仓库.对于一般人来说公共仓库就已经足够了,而且也没多少代码来管理.下面简单介绍如何使用 github,供初 ...
- centos7.0 64位系统安装 nginx
1 下载nginx 从nginx官网 http://nginx.org/ 下载新的稳定版本nginx 并上传到linux服务器 2 安装nginx 所需要的扩展 yum -y install pcre ...
- App压力测试整理
压力测试结果:CRASH:崩溃,应用程序在使用过程中,非正常退出ANR:Application Not Responding MonkeyRunner APIs MonkeyRunner:用来连接设备 ...