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