摘要:换句话说,套接字起到通信端点的作用。单个套接字是一个端点,而一对套接字则构成一个双向通信信道,使非关联进程可以在本地或通过网络进行数据交换。
大家好,我是乐字节小乐,上次给大家讲述了Java中的IO流之输出流|乐字节,本文将会给大家讲述网络编程。
主要内容如下:
网络
网络分层
列表项目
IP位置
端口port
网络编程
一、 网络 1、概念网络即将不同区域的电脑连接到一起, 组成局域网、城域网或广域网。把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。
• 资源共享
• 信息传输与集中处理
• 均衡负荷与分布处理
计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传
输控制步骤、出错控制等制定标准。
4、网络通信接口为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换。接口包括两部分:
• 硬件装置: 实现结点之间的信息传送;
• 软件装置: 规定双方进行通信的约定协议
由于结点之间联系很复杂,在制定协议时,把复杂成份分解成 一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与再下一层不发生关系。
1、 通信协议的分层 2、封装封装:从上往下,加入相关层的协议控制信息
拆封:获取数据,从下往上,去除相关层的协议的控制信息
( IP) 是 Internet Protocol 的外语缩写, 网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。 在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守 IP 协议就可以与因特网互连互通。
端口:区分数据流向的软件 0-65535 不要使用 1024 以下的端口 ,每一个协议拥有自己的端口,在同一个协议下端口不能重复 FTP:21 HTTP:80
四、端口:port端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。可以类比为: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");//主页 默认资源 //获取资源 网络流 可能会出现乱码: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类 +指定端口
②准备数据 字节数组
③封装成数据包 需要指定包发送的地址+端口 即服务器地与端口
④发送数据
⑤释放资源
transfer control protocol,一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议的点到点的通信 。TCP 三次握手(Three-way Handshake),类似于拨打电话
1) 、特点
基于 tcp 协议,建立稳定连接的点对点的通信;实时、快速、安全性高、占用系统资源多、效率低;“请求-响应”模式:
a)、客户端:在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序
b)、服务器:第一次通讯中等待连接的程序被称作服务器端(Server)程序
• Socket:发送 TCP 消息
• ServerSocket:创建服务器
套接字是一种进程间的数据交换机制。这些进程既可以在同一机器上,也可以在通过网
络连接的不同机器上。换句话说,套接字起到通信端点的作用。单个套接字是一个端点,
而一对套接字则构成一个双向通信信道,使非关联进程可以在本地或通过网络进行数据
交换。一旦建立套接字连接,数据即可在相同或不同的系统中双向或单向发送,直到其
中一个端点关闭连接
2) 、服务器:
①创建服务器 指定端口
②等待客户端连接
③分析接收数据
3) 、客户端:
①连接服务器: 创建客户端 +指定服务器地址 +端口
②发送数据
乐字节原创,转载请注明出处。
关于网络编程就讲到这里了,更多Java干货请继续关注乐字节。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75878.html
摘要:注意很多多线程是模拟出来的,真正的多线程是指有多个,即多核如服务器。对于目前的大家来说,线程掌握以下即可创建线程的方式停止线程简单的关于多线程的概念和优缺点就介绍到这,下一篇将会讲讲如何创建多线程。 大家好,乐字节小乐有来咯,上次说完了Java网络编程探究|乐字节,这次我们来看看线程相关的吧。 Java线程主要讲述的内容有:showImg(https://segmentfault.co...
摘要:大家好,我是乐字节的小乐,这次要给大家带来的是变量与数据类型。本文是第一集编程规范,关键字与标识符。后面我们要写一个程序的过程。需求分析实现代码体现注释的作用解释说明程序,提高了代码的阅读性。可以帮助我们调试程序。 大家好,我是乐字节的小乐,这次要给大家带来的是Java变量与数据类型。本文是第一集:Java编程规范,关键字与标识符。showImg(https://segmentfaul...
摘要:二面向对象概述面向过程的设计思想和面向对象的设计思想我要吃鱼香肉丝盖饭面向过程我买菜我洗菜我切菜我放水我点火我做饭我炒菜。。。。 大家好,上次我们讲过了乐字节Java编程之方法、调用、重载、递归,接下来我们将会进入到Java封装的内容。Java编程语言发展,面向对象和类。 一、编程语言的发展 机器语言——直接由计算机的指令组成,指令、数据、地址都以0和1组成:可以被计算机直接识别并执行...
摘要:一的编写新建一个文件的扩展名显示出来编写代码,以类为单位编写,编写入口函数方法类名最好与文件名一致程序的入口以分号结尾通过命令完成编译操作需要写文件的完整路径运行程序,运行文件字节码文件通过命令完成执行如下命令其中是用来指定路径。 今天,我们来写一段Java程序。然后看看Java程序是如何执行的,以及Java新手小白遇到的问题和解决办法。 一、HelloWorld的编写 ① 新建一个X...
摘要:流分类由此可见,流很庞大从不同角度进行分类数据分类按处理数据单位分为字节流和字符流。处理数据是音频视频文本等一切为字节流,仅能处理文本的为字符流。功能分类节点流和处理流。从向一个特定的设备磁盘网络等读写数据的流称为节点流,也常被称为低级流。 嗨喽,小乐又来了,今天要给大家送上的技术文章是Java重点知识-IO流。 先来看看IO流的思维导图吧。showImg(https://segmen...
阅读 4977·2021-11-25 09:43
阅读 1683·2021-10-27 14:18
阅读 1054·2021-09-22 16:03
阅读 1347·2019-08-30 13:19
阅读 1571·2019-08-30 11:15
阅读 1643·2019-08-26 14:04
阅读 3122·2019-08-23 18:40
阅读 1164·2019-08-23 18:17