黑马程序员——基础知识——网络传输

时间:2021-12-07 12:01:34
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Day26

26.01 网络编程概述

       1、计算机网络

              是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统

       2、网络编程

              就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换

 

26.02 网络编程三要素之一:IP概述

       每个设备在网络中的唯一标识

       每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址

       ipconfig:(DOS命令行输入)查看本机IP:192.168.1.104

       ping:测试连接192.168.40.62 测试本机与指定地址是否连接

       本地回路地址:127.0.0.1(自己给自己发)   255.255.255.255是广播地址

       IPv4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿,2011年初已经用尽

 

       IPv6:8组,每组4个16进制数:

              1a2b:0000:aaaa:0000:0000:0000:aabb:1f2f

              1a2b: aaaa:0000:0000:0000:aabb:1f2f

1a2b:0000:aaaa::aabb:1f2f

1a2b:0000:aaaa::0000:aabb:1f2f

1a2b:0000:aaaa:0000::aabb:1f2f

 

26.03 网络编程三要素之二:端口号概述

       每个程序在设备上的唯一标识

       每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。

       端口号范围从0-65535

       编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了

       常用端口

              mysql:3306

              oracle:1521

              web:80

              tomcat:8080

              QQ:4000

              feiQ:2425

       找到IP地址,还要找到端口,才能找到具体的应用程序。

 

 

26.04 网络编程三要素之三:协议

       为计算机网络中进行数据交换而建立的规则、标准、或约定的集合

       UDP

              面向无连接,数据不安全,速度快。不区分客户端和服务端

              可以比喻为发短信,不管号码是否开机是否存在号码,都可以发送

       TCP

              面向连接(三次握手),数据安全,速度略低。分为客户端和服务端

      

三次握手:1客户端先向服务端发起请求,2服务端响应请求,3传输数据

       可以比喻为打电话:首先号码必须存在并通着,然后拨电话发请求

 

26.05 Socket通信原理图解

       1、Socket套接字概述:(Socket又称为"套接字"Socket翻译:插座、孔)

              网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字

              通信的两端都有Socket

              网络通信其实就是Socket间的通信

              数据在两个Socket间通过IO流传输

              Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port(端口号)

 

              Socket相当于码头,IO流相当于船,来回运输

 

26.06 UDP传输

       1、发送Send

              创建DatagramSocket,随机端口号

              创建DatagramPacket,指定数据,长度,地址,端口

              使用DatagramSocket发送DatagramPacket

              关闭DatagramSocket

       2、接收Receive

              创建DatagramSocket,指定端口号

              创建DatagramPacket,指定数组,长度

              使用DatagramSocket接收DatagramPacket

              关闭DatagramSocket

              从DatagramSocket中获取数据

       3、接收方获取IP和端口号

              String ip =packet.getAddress().getHostAddress();

              int port =packet.getPort();

黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输

26.07 UDP传输优化

       1、接收端Receive

黑马程序员——基础知识——网络传输

2、发送端Send

黑马程序员——基础知识——网络传输

26.08 UDP传输多线程

       1、发送和接收在一个窗口完成

       开启了多线程就可以同时执行

黑马程序员——基础知识——网络传输

26.09 UDP聊天图形化界面

       Panel是最简单的容器类。应用程序可以将其他组件放在面板提供的空间内,这些组件包括其他面板。

       TextField文本框

       4个Button

       TextArea文本区域

 

26.10 UDP聊天发送功能

 

26.11 UDP聊天清屏功能

 

26.12 UDP聊天记录功能

 

26.13 UDP聊天震动功能

 

26.14 UDP聊天快捷键和代码优化

 

26.15 UDP聊天生成jar文件


黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输

26.16 TCP协议

       1、客户端

              创建Socket的连接服务端(指定IP地址,端口号)通过IP地址找对应的服务器

              调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流

              输入流可以读取服务端输出流写出的数据

              输出流可以写出数据到服务端的输入流

       2、服务端

              创建ServerSocket(需要指定端口号)

              调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket

              调用Socket的getInputStream和getOutputStream方法获取和客户端相连的IO流

              输入流可以读取客户端输出流写出的数据

              输出流可以写出数据到客户端的输入流

       客户端和服务端就像打电话一样,听筒对话筒,话筒对听筒

黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输

26.17 TCP协议代码优化

黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输

26.18 服务端是多线程的

黑马程序员——基础知识——网络传输

26.19 练习1

客户端向服务器写字符串(键盘录入),服务器(多线程)将字符串反转后写会,客户端再次读取到反转后的字符串

       注意:关闭socket就会关闭该套接字的InputStream和OutputStreams

黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输

26.20 练习2

黑马程序员——基础知识——网络传输黑马程序员——基础知识——网络传输