大家好,我是乐字节小乐,上次给大家讲述了Java中的IO流之输出流|乐字节,本文将会给大家讲述网络编程。

主要内容如下:

  • 网络
  • 网络分层
  • IP位置
  • 端口port
  • 网络编程

一、 网络

1、概念

网络即将不同区域的电脑连接到一起, 组成局域网、城域网或广域网。把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。

2、主要功能

• 资源共享
• 信息传输与集中处理
• 均衡负荷与分布处理

3、网络通信协议

计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传

输控制步骤、出错控制等制定标准。

4、网络通信接口

为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换。接口包括两部分:

• 硬件装置: 实现结点之间的信息传送;
• 软件装置: 规定双方进行通信的约定协议

二、 网络分层

由于结点之间联系很复杂,在制定协议时,把复杂成份分解成 一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与再下一层不发生关系。

1、 通信协议的分层

2、封装

封装:从上往下,加入相关层的协议控制信息

3、拆封

拆封:获取数据,从下往上,去除相关层的协议的控制信息

三、 IP位置

( IP) 是 Internet Protocol 的外语缩写, 网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。 在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守 IP 协议就可以与因特网互连互通。

端口:区分数据流向的软件 0-65535 不要使用 1024 以下的端口 ,每一个协议拥有自己的端口,在同一个协议下端口不能重复 FTP:21 HTTP:80

四、端口:port

端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。可以类比为:IP 相当于公司,端口相当于公司各部门,URL,相当于各部门的人员。

五、资源的传输协议

TCP:TCP(transfer control protocol) 打电话 面向连接、安全、可靠,效率低 
UDP:UDP(UserDatagramProtocol ) 发送短信 非面向连接、不安全、数据可能丢失 、效率高

六、网络编程

1、InetAddress
封装计算机的 ip 地址和 DNS( Domain Name System,域名系统) ,没有端口。
1)、方法
InetAddress.getLocalHost();
InetAddress.getByName("http://www.163.com");
InetAddress.getByName("223.87.1.58")

2) 、方法
getHostAddress() 返回 ip 地址
getHostName() 返回域名|本机为计算机名

2、InetSocketAddress
包含端口,用于 socket 通信的 
1) 、获取对象
InetSocketAddress(String hostname, int port)
InetSocketAddress(InetAddress addr, int port)

2) 、方法
getAddress() 返回 InetAddress 对象
getPort() 返回端口
getHostName() 返回域名

3 、URL
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");//主页 默认资源
//获取资源 网络流 可能会出现乱码:1、字节数不够 2、编码解码格式不统一
/*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();}

4、UDP编程: DatagramSocket DatagramPacket

UserDatagramProtocol,一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。其特点为:非面向连接;传输不可靠;数据可能丢失。

1)、服务器:
①创建服务器 DatagramSocket类 +指定端口
②准备接收容器 字节数组 +封装成DatagramPacket数据包
③接收数据
④分析数据
⑤释放资源

2)、客户端:
①创建客户端 DatagramSocket类 +指定端口
②准备数据 字节数组
③封装成数据包 需要指定包发送的地址+端口 即服务器地与端口
④发送数据
⑤释放资源

5、TCP 编程:ServerSocket Socket

transfer control protocol,一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议的点到点的通信 。TCP 三次握手(Three-way Handshake),类似于拨打电话

1) 、特点

基于 tcp 协议,建立稳定连接的点对点的通信;实时、快速、安全性高、占用系统资源多、效率低;“请求-响应”模式:

a)、客户端:在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序

b)、服务器:第一次通讯中等待连接的程序被称作服务器端(Server)程序

• Socket:发送 TCP 消息

• ServerSocket:创建服务器

套接字是一种进程间的数据交换机制。这些进程既可以在同一机器上,也可以在通过网

络连接的不同机器上。换句话说,套接字起到通信端点的作用。单个套接字是一个端点,

而一对套接字则构成一个双向通信信道,使非关联进程可以在本地或通过网络进行数据

交换。一旦建立套接字连接,数据即可在相同或不同的系统中双向或单向发送,直到其

中一个端点关闭连接

2) 、服务器:

①创建服务器 指定端口

②等待客户端连接

③分析接收数据

3) 、客户端:

①连接服务器: 创建客户端 +指定服务器地址 +端口

②发送数据

乐字节原创,转载请注明出处。

关于网络编程就讲到这里了,更多Java干货请继续关注乐字节。

Java网络编程探究|乐字节的更多相关文章

  1. java网络编程serversocket

    转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerS ...

  2. java网络编程socket解析

    转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...

  3. JAVA网络编程【转】出处不详

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  4. 【Java】Java网络编程菜鸟进阶:TCP和套接字入门

    Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protoco ...

  5. Java 网络编程---分布式文件协同编辑器设计与实现

    目录: 第一部分:Java网络编程知识 (一)简单的Http请求 一般浏览网页时,使用的时Ip地址,而IP(Internet Protocol,互联网协议)目前主要是IPv4和IPv6. IP地址是一 ...

  6. 【转】JAVA 网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  7. Java - 网络编程完全总结

    本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一.概述 ...

  8. 【转载】Java 网络编程

      本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一. ...

  9. Java网络编程和NIO详解开篇:Java网络编程基础

    Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...

随机推荐

  1. 原创:Solr Wiki 中关于Suggester(搜索推荐)的简单解读

       Solr Wiki Suggester Suggester - a flexible "autocomplete" component.(搜索推荐) A common nee ...

  2. golang 无缓冲channel

    golang 无缓冲channel package main import "fmt" func main() { // 1S =1000ms //1ms = 1000us //1 ...

  3. Control.ImeMode属性简释

    在WINFORM中,我们经常遇到如下问题.文本输入框中输入法有时候需要被禁用,或者某些时候全半角输入自动转换.查阅相关资料,现小结如下. (一)Control.ImeMode 属性:获取或设置控件的输 ...

  4. gisoracle做windows界面

    import tkinter as tk from tkinter import messagebox # 设置窗口居中 def window_info(): ws = window.winfo_sc ...

  5. 树莓派python 控制GPIO

    sudo pip install rpi.gpio #!/usr/bin/env python # encoding: utf-8 import RPi.GPIO as GPIO import tim ...

  6. Java查询目录下的所有文件(包括子目录)

    目录图: 方法代码: /** * 读取目录下的所有文件 * * @param dir * 目录 * @param fileNames * 保存文件名的集合 * @return */ public st ...

  7. 005 Spring和SpringBoot中的@Component 和@ComponentScan注解

    今天在看@ComponentScan,感觉不是太理解,下面做一个说明. 1.说明 ComponentScan做的事情就是告诉Spring从哪里找到bean 2.细节说明 如果你的其他包都在使用了@Sp ...

  8. 如何在shell脚本中获取当前用户名?

    答:使用环境变量USER即可 如在脚本中打印当前用户名; #!/bin/sh echo "user name = ${USER}"

  9. Javascript中的String.format方法实现

    <script type='text/javascript'> String.format = function() { var s = arguments[0]; for (var i ...

  10. 使用cmi工具连接服务器远程装机exsi

    使用cmi工具连接服务器远程装机exsi 网宿机房有两台服务器磁盘坏掉了,后面换了磁盘需要重新初始化系统 访问:http://192.168.48.133/cgi/url_redirect.cgi?u ...