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选择语句 ...
随机推荐
- (转) linux之sort用法
sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序. 参 数 ...
- 如何让linux定时任务crontab按秒执行
如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...
- drupal前端开发的第一点
就是把admin/config/development/performance下面的选项全部去掉,方便作为一个匿名用户来访问,不用每次都drush cc all.
- WPF CAL 计算器
界面最终结果: 下载地址:https://skydrive.live.com/redir?resid=25C3908AA2038BDB!148&authkey=!ADR71XdB04LipYE
- PHP自动发邮件
自动发邮件 使用了这个类http://bbs.php100.com/read-htm-tid-121431.html 因他用的php版本较老,用到了函数ereg_replace() 和 ereg() ...
- C++指针之防不胜防
我们在使用指针时,经常会出现下面几种错误: 1) 内存分配未成功,却使用了它. 编程新手常犯这种错误,因为他们没有意识到内存分配会不成功.常用解决办法是,在使用内存之前检查指针是否为NULL.如果指针 ...
- PHP 数组
// 这里用数字来作为索引 $myArray = array(2012, 'blue', 5, 'BMW'); // 这个用关键字作为索引 $myAssocArray = array('year' = ...
- JSON序列化和反序列化的实例
之前有项目中使用到了Json的序列化和反序列化,现在将使用的实例记录下来以备查阅.如有不妥,请指教. 代码的最终目的是得到一个符合 resultClass<List<rtnGetFindM ...
- Photo Kit 框架
http://geek.csdn.net/news/detail/56031 http://www.jianshu.com/p/9988303b2429 http://blog.sina.com.cn ...
- Mac上常用的一些命令
FTP:先cd到要传的文件的文件夹>ftp 10.214.111.1cd到上传的ftp文件put 文件名 虚拟环境cd myproject. venv/bin/activate 激活sudo p ...