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选择语句 ...
随机推荐
- Deep Learning 3_深度学习UFLDL教程:预处理之主成分分析与白化_总结(斯坦福大学深度学习教程)
1PCA ①PCA的作用:一是降维:二是可用于数据可视化: 注意:降维的原因是因为原始数据太大,希望提高训练速度但又不希望产生很大的误差. ② PCA的使用场合:一是希望提高训练速度:二是内存太小:三 ...
- git drupal eclipse
eclispe如何打补丁https://www.drupal.org/patch/apply打patch,初级详细教程https://www.drupal.org/node/620014
- Android Material适配 为控件设置指定背景色和点击波纹效果
Android Material适配 为控件设置指定背景色和点击波纹效果,有需要的朋友可以参考下. 大部分时候,我们都需要为控件设置指定背景色和点击效果 4.x以下可以使用selector,5.0以上 ...
- MyBatis/Ibatis中#和$的区别
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111&qu ...
- 基于TF-IDF值的汉语语义消歧算法
RT,学校课题需要233,没了 话说,窝直接做个链接的集合好了,方便以后查找 特征值提取之 -- TF-IDF值的简单介绍 汉语语义消歧之 -- 句子相似度 汉语语义消歧之 -- 词义消歧简介 c++ ...
- iOS开发拓展篇—音效的播放
iOS开发拓展篇—音效的播放 一.简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中 ...
- POJ 3041 Asteroids 匈牙利算法,最大流解法,行列为点 难度:1
http://poj.org/problem?id=3041 #include <cstdio> #include <cstring> #include <vector& ...
- Solr安装入门、查询详解
Solr安装入门:http://www.importnew.com/12607.html 查询详解:http://www.360doc.com/content/14/0306/18/203871_35 ...
- MJRefresh的一个注意事项
如果从视图一跳转到视图二之后,在视图二中进行MJRefresh的刷新操作,那么在推出试图二之前要用dealloc函数将MJRefreshHeaderView或者MJRefreshFooterView释 ...
- GCC编译器编译链接
在gcc编译器环境下,常见的文件扩展名的含义如下: .c:C源程序,经过预编译后的源程序也为.c文件,它可以通过-E参数输出. .h:头文件 .s:经过编译得到的汇编程序代码,它可以通过-S参数输出. ...