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选择语句 ...
随机推荐
- MemCache的LRU删除机制详解
本节主要讲解一下MC的LRU的删除机制和一些参数的限制 MC的过期数据惰性删除 1.当某个值过期后,并没有从内存中删除,因此,我们在进行st ats统计信息的时候,curr_items有其信息(它的数 ...
- Git最佳实践
1.git init 2.git add. 3.git add README.md 4.git commit -m "init" 5.git remote add origin h ...
- 在centos6.5中安装zookeeper集群
简介 ZooKeeper服务器是用Java编写创建,它运行在JVM.所以需要使用JDK 6或更高版本,在这里就不说在centos安装jdk环境了,直接进入正题,我搭建的是 192.168.0.2, 1 ...
- Linux 系统目录结构
登录系统后,在当前命令窗口下输入命令: ls / 你会看到如下图所示: 树状目录结构: 以下是对这些目录的解释: /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot ...
- yii2-basic后台管理功能开发之一:引入模板
前景:哎没想到用php的yii2框架写了官网……自己选择的框架,跪着也要码完,当年用yii2-basic搭建了官网,原是想偷懒的,没想到还要写后台.... 需求:实现一个可编辑页面图片及新闻内容的后台 ...
- 加强型无穷集合:InfiniteList<T>,可指定遍历方向和偏移量,只要集合有元素并且偏移量不为 0,将永远遍历下去。
主类: public class InfiniteList<T> : IEnumerable<T> { public List<T> SourceList { ge ...
- subplot demo
Y=[6484.05190614446 3479.60374683749 2326.82521799362 862.207727785871 423.711173743815 299.23540931 ...
- Educational Codeforces Round 14 D. Swaps in Permutation
题目链接 分析:一些边把各个节点连接成了一颗颗树.因为每棵树上的边可以走任意次,所以不难想出要字典序最大,就是每棵树中数字大的放在树中节点编号比较小的位置. 我用了极为暴力的方法,先dfs每棵树,再用 ...
- Sprint.Net 笔记
有生以来写的第一份博客, 还真不会写, 请高手们指导指导. 1.引入 Spring.Core.dll 和 Common.Logging.dll 两个文 2. 在UI层的Web.conf 的 <C ...
- 10个优秀的JavaScript Web UI库/框架推荐
在进行Web开发时,并非所有的库都适合你的项目,但你仍需要收藏一些Web UI设计相关的库或框架,以在你需要的时候,加快你的开发效率. 本文为你带来10款非常优秀的基于JavaScript的Web U ...