Java网络编程
1
、计算机网络的概念
计算机网络就是
通讯线路与
通讯设备将分布在
不一样地点的具备
独立功能的多个计算机系统互相链接起来,在
网络软件的支持下实现彼此之间的
数据通讯和
资源共享的系统。
二、计算机网络的划分
(1)按地理位置划分:广域网、局域网、城域网
(2)按拓扑结构划分:星形、总线形、环形
(3)按传输介质划分:同轴电缆网、双绞线网、光纤网、卫星网、无线网
(4)按通讯协议划分:以太网(CSMA/CD协议)、令牌环网(令牌环协议)、Internet网(TCP/IP协议)
(5)按宽带速率划分:低速网、中速网、高速网
三、网络编程的架构
几种经常使用的Android网络框架:
(1)android_async_http: HTTP请求发生在UI线程以外,自动智能请求重试,优化了质量不一的移动链接,自动解码支持gzip反应速度超快的请求,持久化cookie存储,保存cookie到你的应用程序的SharedPreferences。
(2)http_request: 在小型的项目上性能表现最好,若是你的项目不是很大,这个框架是一个不错的选择。
(3)okhttp: 使用 OkHttp 无需重写你程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection同样的API。若是你用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块
。
(4) retrofit: 是一个类型安全的 REST 客户端。
(5)Netroid: 一个基于
Volley 实现的Android Http库。提供执行网络请求、缓存返回结果、批量图片加载、大文件断点下载的常见Http交互功能。致力于避免每一个项目重复开发基础Http功能,实现显著地缩短开发周期的愿景。
网络分层
网络分层就是将网络节点所要完成的数据的发送或转发、打包或拆包、控制信息的加载或拆出等工做,分别由不一样的硬件和软件模块去完成.这样能够将往来通讯和网络互连这一复杂的问题变得较为简单.
OSI(Open System Interconnection),即开放式系统互联。
ISO提出的OSI(Open System Interconnection)模型将网络分为七层,即物理层( Phisical )、数据链路层(Data Link)、网络层(Network)、传输层(Transport)、会话层(Session)、表示层(Presentation)和应用层(Application).
五、
什么是网络编程?
网络编程:使用编程语言实现多台计算机的通讯。java
六、网络编程三要素
(3)协议:
用生活中的例子说明:假如我要和小明说话,首先我要到小明的住址找到小明(至关于经过IP找到指定计算机);以后我要和小明说话,小明用耳朵听我说(至关于用端口接收);而咱们对话不能使用鸟语,须要做出规定彼此都要使用都能听懂的普通话(这就是协议的做用了)。
IP地址
由四个字节32位的数字组成(ps:192.168.1.1),在InetAddress获取ip地址和主机名,127.0.0.l 和localhost都表示本机地址。
端口
0~1024是系统程序的端口号(ps:80 网络端口)因此在写本身程序的时候使用端口号应该是:1024~65535
协议
TCP
面向链接,三次握手
安全性高,效率低
TCP协议发送数据是没有大小限制的
UDP
无链接协议
安全性低,效率高
UDP协议发送数据的时候,用的是数据报包的形式。大小是在64KB之内
Socket 套接字
网络上具备惟一标识的IP地址和端口组合在一块儿才能构成惟一能识别的标识符套接字。
Socket原理机制:
一、通讯的两端都有Socket
二、网络通讯其实就是Socket间的通讯
三、数据在两个Socket间经过IO传输
七、Java中的网络支持apache
针对网络通讯的不一样层次,Java提供了不一样的API,其提供的网络功能有四大类:编程
InetAddress:用于标识网络上的硬件资源,主要是IP地址缓存
URL:统一资源定位符,经过URL能够直接读取或写入网络上的数据安全
Sockets:使用TCP协议实现的网络通讯Socket相关的类服务器
Datagram:使用UDP协议,将数据保存在用户数据报中,经过网络进行通讯
UDP协议的通讯
:
发送端:
一、创建DatagramSocket对象
二、将数据封装到数据包中
三、发送数据包
四、关闭资源
接收端:
一、创建DatagramSocket对象
二、定义一个空的数据包
三、接受数据包
四、解析数据包
五、关闭资源
TCP协议的通讯 (C/S模式、Socket套接字)
服务端:
一、
建立ServerSocket对象,绑定监听端口
二、
经过accept()方法监听客户端请求,等待客户端的链接,返回一个Socket对象
三、
链接创建后,经过输入流向接收客服端端发送请求信息
四、 经过输入出流返回服务器响应的信息
五、关闭资源
客户端:
一、创建Socket对象,
指明须要链接的服务器的地址和端口号
二、
链接创建后,经过输出流向服务器端发送请求信息
三、 经过输入流获取服务器响应的信息
四、关闭资源