发表时间:2022-03-24来源:网络
什么是计算机网络?
指分布在不同地域的计算机,通过外部设备连接起来,实现了资源共享(数据和设备的共享),实现数据传输的计算机系统。外部设备有:计算机、路由器、交换机等等。
什么是网络编程?
网络编程关注的是数据的传输,在Java中又称为Socket编程。主要处理计算机与计算机之间的数据通信问题。
计算机网络的三要素:
IP地址:(家庭住址)是指互联网协议地址(Internet Protocol Address),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址。
端口号:(门牌号)计算机中有很多软件与外界网络进行通信,每个通信的软件都会分配一个操作的端口号,用来区分不同的软件。
协议:(快递的方式和格式)是网络上所有设备(网络服务器、计算机、交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义,以及数据的传输方式等规定。
资源的查找方式:
通过IP地址找计算机,通过端口号找软件,通过协议来约定数据传输的格式
查看IP地址的DOS命令:ipconfig
检测网路是否连通的DOS命令:ping 对方的IP地址
ping不通的结果:
ping通的结果:
IPV4的格式:
Internet上的每台主机(Host)都有一个唯一的IP地址。IP地址的长度为32位二进制,分为4段,每段8位。使用十进制数字表示,则每段数字范围为0~255,段与段之间用句点隔开。例如159.226.1.1。(四个字节)
1) 格式:网络号+主机号
2) 分类:
A类:网络号.主机号.主机号.主机号
网络号占1个字节(0-127),主机号占3个字节。2^24 = 1677万
B类: 网络号.网络号.主机号.主机号
网络号占2个字节,主机号占2个字节。 16000多个网络,每个网络中的主机数是:65534
C类:网络号.网络号.网络号.主机号
网络号占3个字节,主机号占1个字节。200多万的网络,每个网络的主机数是254
IPV6的介绍:
IPv4从理论上讲,编址1600万个网络、40亿台主机。但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至IP地址已于2011年2月3日分配完毕。其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国截止2010年6月IPv4地址数量达到2.5亿,落后于4.2亿网民的需求。地址不足,严重地制约了中国及其他国家互联网的应用和发展。
IPv6具有更大的地址空间,IPv6中IP地址的长度为128位,即最大地址个数为2^128。分为8个16位的块。每个块,然后转换成由冒号分隔的4位十六进制数。如:2001:0000:3238:DFE1:0063:0000:0000:FEFB
本机的IP地址:
IPV4: 127.0.0.1 (点号分隔)
IPV6: 0:0:0:0:0:0:0:1 (冒号分隔)
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
不同的软件通信,端口号不能相同,不能有冲突。
计算机之间又是如何交换信息的呢?就像我们说话用某种语言一样,在网络上的各台计算机之间也有语言,这就是网络协议,不同的计算机之间必须使用相同的网络协议才能进行通信。
网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。
常用协议和端口号:
网络模型:是计算机网络通讯规范
OSI(Open System Interconnection开放系统互连)模型:
从上到下分七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
1) 应用层:老板
2) 表示层:相当于公司中演示文稿、替老板写信的助理
3) 会话层:相当于公司中收寄信、写信封与拆信封的秘书
4) 传输层:相当于公司中跑邮局的送信职员
5) 网络层:相当于邮局中的对邮件分类的工人
6) 数据链路层:相当于邮局中的装拆箱工人
7) 物理层:相当于邮局中的搬运工人
TCP/IP(Transmission Control Protocol/Internet Protocol 传输控制协议/互联网协议) 模型:
分四层:应用层、传输层、网络层、网络接口层
1) 应用层:应用层是应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等
2) 传输层:使源端和目的端机器上可以进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。
3) 网络层:主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。
4) 网络接口层:它负责监视数据在主机和网络之间的交换。
java.net.InetAddress:
此类表示互联网协议 (IP) 地址。IP 地址是 IP 使用的 32 位或 128 位无符号数字,它是一种低级协议,UDP 和 TCP 协议都是在它的基础上构建的。
InetAddress类的方法:
得到本机IP对象:
得到其它机器的IP对象:
//通过IP地址的字符串 //通过对方的主机名 //通过域名 InetAddress.getByName(String ip)得到IP地址的信息:
//返回 IP 地址字符串(以文本表现形式) String getHostAddress() //获取此 IP 地址的主机名 String getHostName() //返回此 InetAddress对象的原始 IP 地址,返回一个字节数组 byte[] getAddress()Demo示例:
public class Demo1 { public static void main(String[] args) throws IOException { //得到主机: //得到自己的机器 //InetAddress address = InetAddress.getLocalHost(); //通过IP地址的字符串 //InetAddress address = InetAddress.getByName("192.168.151.6"); //通过主机名 //InetAddress address = InetAddress.getByName("NEWBOY-PC"); //通过域名 InetAddress address = InetAddress.getByName("www.163.com"); //输出IP地址 System.out.println("IP地址是:" + address.getHostAddress()); System.out.println("主机名是:" + address.getHostName()); System.out.println("IP地址的字节表示:" + Arrays.toString(address.getAddress())); } }1.UDP协议的特点:
概念:User Datagram Protocol 用户数据报协议,以包的方式在网上传送数据,每个包都有传送和接受地址的讯息。
1) 连接:发送数据不需创建连接,分为发送端和接收端。
2) 大小:发送数据是以包为单位进行发送的,每个包的大小限制在64K
3) 丢失:传输速度快,可能会造成数据丢失。
4) 速度:相比TCP协议来说传输速度更快
应用:视频通话, CS
2.UDP类的API:
使用到的类:
发送端:
1) 创建发送端DatagramSocket
2) 创建数据包对象DatagramPacket
//buf 字节数组:用来封装任意的二进制数据 //length:数据的长度,length 参数必须小于等于 buf.length,一般与数组的长度相同 //address:接收方的IP地址 //port: 接收方的端口号 DatagramPacket(byte[] buf, int length, InetAddress address, int port)3) 发送方法
void send(DatagramPacket p) //从此套接字发送数据报包4) 关闭DatagramSocket
void close() //关闭此数据报套接字接收端:
1) 创建接收端DatagramSocket
2) 创建数据包对象DatagramPacket
//构造 DatagramPacket,用来接收长度为 length 的数据包 DatagramPacket(byte[] buf, int length)3) 接收方法:
//从此套接字接收数据报包,这是一个阻塞型的方法,如果数据没有来,则一定等待 void receive(DatagramPacket p)4) 关闭DatagramSocket
//关闭此数据报套接字 void close()需求:使用UDP协议实现群聊的功能,发送信息和接收信息同时进行,输入端输入exit,则结束程序的运行。
1) 采用多线程的技术
2) 创建一个线程发送方,在键盘输入信息。输入exit退出聊天室。
3) 创建一个线程接收方,在控制台输出接收到的信息。
4) 注:给一个网段中所有的用户发送信息使用IP广播地址:192.168.x.255
1.TCP协议的特点:
1) 连接:数据传输可靠,传输之前需要创建连接。
2) 大小:因为有连接,一旦连接成功,数据通过IO流的方式进行传输,可以传输无限大小的数据。
3) C/S:有服务端和客户端之分,也就是平时所说的C/S(Client / Server)结构。
4) 速度:相比UDP协议,传输速度更慢。
2.TCP的API:
客户端: Socket类(套接字)
1) 构造方法:
2) 方法:
void close() //关闭此套接字。 InputStream getInputStream() //返回此套接字的输入流。 如果从输入流中读取数据,就相当于接收信息。 OutputStream getOutputStream() //返回此套接字的输出流。 如果向输出流中写入数据,就相当于发送信息。服务端: ServerSocket类
1) 构造方法:
2) 关闭此套接字
void close()3.为什么ServerSocket服务端类没有得到输入输出流的方法?
Socket accept() //是一个阻塞型的方法,每来一个客户端,就创建一个Socket对象与其对应,进行数据的通信需求:
1) 客户端和服务端都使用键盘输入的方式,把信息发送给对方。
2) 使用字符流的方式,处理字符数据更加方便。
3) BufferedReader中readLine();读取一行数据,使用BufferedWriter write(“字符串的数据”) 写数据
2.技术要点:
1) 因为字符流有缓存,所以如果要发送数据到对方的话,需要flush(),如果没有调用flush()会导致数据发送失败,对方无法收到数据。
2) 写入数据给对方,一定要换行,调用newLine(),否则对方无法使用readLine()读取到数据。
需求:编写一个TCP的服务端,可以接受多个客户端的连接,当接收到用户的连接请求以后,就要把一张图片传回给客户端。
分析:如果有一个用户连接上了,还在传输文件的过程中,又有新的用户连接,则会受到影响,所以要用到多线程的知识。每个用户使用一个专门的线程来服务,1对多的关系。
要点:
1) 只需创建一个ServerSocket对象
2) 每次accpet()得到一个Socket对象以后,通过构造方法传入到多线程类中,创建一个新的线程。
3) 多线程类的run方法读取本地服务器端的文件,通过字节流的方式写入到客户端中。
4) 注意:文件发送完成以后,是不会发送-1过去的,所以对方无法结束。需要调用方法:socket.shutdownOutput()
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14