你们好,我是乐字节小乐,上次给你们讲述了Java中的IO流之输出流|乐字节,本文将会给你们讲述网络编程。html
主要内容以下:数据库
网络即将不一样区域的电脑链接到一块儿, 组成局域网、城域网或广域网。把分布在不一样地理区域的计算机与专门的外部设备用通讯线路互连成一个规模大、功能强的网络系统,从而使众多的计算机能够方便地互相传递信息,共享硬件、软件、数据信息等资源。编程
• 资源共享
• 信息传输与集中处理
• 均衡负荷与分布处理数组
计算机网络中实现通讯必须有一些约定即通讯协议,对速率、传输代码、代码结构、传安全
输控制步骤、出错控制等制定标准。服务器
为了使两个结点之间能进行对话,必须在它们之间创建通讯工具(即接口),使彼此之间能进行信息交换。接口包括两部分:网络
• 硬件装置: 实现结点之间的信息传送;
• 软件装置: 规定双方进行通讯的约定协议app
因为结点之间联系很复杂,在制定协议时,把复杂成份分解成 一些简单的成份,再将它们复合起来。最经常使用的复合方式是层次方式,即同层间能够通讯、上一层能够调用下一层,而与再下一层不发生关系。socket
封装:从上往下,加入相关层的协议控制信息tcp
拆封:获取数据,从下往上,去除相关层的协议的控制信息
( IP) 是 Internet Protocol 的外语缩写, 网络之间互连的协议也就是为计算机网络相互链接进行通讯而设计的协议。 在因特网中,它是能使链接到网上的全部计算机网络实现相互通讯的一套规则,规定了计算机在因特网上进行通讯时应当遵照的规则。任何厂家生产的计算机系统,只要遵照 IP 协议就能够与因特网互连互通。
端口:区分数据流向的软件 0-65535 不要使用 1024 如下的端口 ,每个协议拥有本身的端口,在同一个协议下端口不能重复 FTP:21 HTTP:80
端口是虚拟的概念,并非说在主机上真的有若干个端口。经过端口,能够在一个主机上运行多个网络应用程序。能够类比为:IP 至关于公司,端口至关于公司各部门,URL,至关于各部门的人员。
TCP:TCP(transfer control protocol) 打电话 面向链接、安全、可靠,效率低
UDP:UDP(UserDatagramProtocol ) 发送短信 非面向链接、不安全、数据可能丢失 、效率高
封装计算机的 ip 地址和 DNS( Domain Name System,域名系统) ,没有端口。
1)、方法
InetAddress.getLocalHost();
InetAddress.getByName("http://www.163.com");
InetAddress.getByName("223.87.1.58")
2) 、方法
getHostAddress() 返回 ip 地址
getHostName() 返回域名|本机为计算机名
包含端口,用于 socket 通讯的
1) 、获取对象
InetSocketAddress(String hostname, int port)
InetSocketAddress(InetAddress addr, int port)
2) 、方法
getAddress() 返回 InetAddress 对象
getPort() 返回端口
getHostName() 返回域名
1) 、URI(Uniform resource identifier)
统一资源标识符, 用来惟一的标识一个资源。
2) 、URL( Uniform Resource Locator)
统一资源定位器,它是一种具体的 URI 。统一资源定位符,由 4 部分组成:协议 、存
放资源的主机域名、资源文件名和端口号。 URL是指向互联网“资源”的指针。资源能够是简单的文件或目录,也能够是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
3) 、网络爬虫原理
public static void main(String[] args) throws IOException { URL url=new URL("http://www.baidu.com");//主页 默认资源 //获取资源 网络流 可能会出现乱码:一、字节数不够 二、编码解码格式不统一 /*InputStream is=url.openStream(); byte[]flush=new byte[1024]; int len=0; while(-1!=(len=is.read(flush))){ System.out.println(new String(flush,0,len)); } is.close();*/ BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream(),"utf-8")); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("baidu2.html"),"utf-8")); String msg=null; while((msg=br.readLine())!=null){ //将网络内容下载到本地。而后进行数据分析,创建索引,这也是搜索引擎的第一步。 bw.append(msg); bw.newLine();//新增方法 插入换行符 } bw.flush();//强制刷出 bw.close(); br.close();}
UserDatagramProtocol,一种无链接的传输层协议,提供面向事务的简单不可靠信息传送服务。其特色为:非面向链接;传输不可靠;数据可能丢失。
1)、服务器:
①建立服务器 DatagramSocket类 +指定端口
②准备接收容器 字节数组 +封装成DatagramPacket数据包
③接收数据
④分析数据
⑤释放资源
2)、客户端:
①建立客户端 DatagramSocket类 +指定端口
②准备数据 字节数组
③封装成数据包 须要指定包发送的地址+端口 即服务器地与端口
④发送数据
⑤释放资源
transfer control protocol,一种面向链接(链接导向)的、可靠的、基于字节流的传输层(Transport layer)通讯协议的点到点的通讯 。TCP 三次握手(Three-way Handshake),相似于拨打电话
1) 、特色
基于 tcp 协议,创建稳定链接的点对点的通讯;实时、快速、安全性高、占用系统资源多、效率低;“请求-响应”模式:
a)、客户端:在网络通信中,第一次主动发起通信的程序被称做客户端(Client)程序
b)、服务器:第一次通信中等待链接的程序被称做服务器端(Server)程序
• Socket:发送 TCP 消息
• ServerSocket:建立服务器
套接字是一种进程间的数据交换机制。这些进程既能够在同一机器上,也能够在经过网
络链接的不一样机器上。换句话说,套接字起到通讯端点的做用。单个套接字是一个端点,
而一对套接字则构成一个双向通讯信道,使非关联进程能够在本地或经过网络进行数据
交换。一旦创建套接字链接,数据便可在相同或不一样的系统中双向或单向发送,直到其
中一个端点关闭链接
2) 、服务器:
①建立服务器 指定端口
②等待客户端链接
③分析接收数据
3) 、客户端:
①链接服务器: 建立客户端 +指定服务器地址 +端口
②发送数据
乐字节原创,转载请注明出处。
关于网络编程就讲到这里了,更多Java干货请继续关注乐字节。