1、网络入门
1、两种模式
C/S结构 :全称为Client/Server结构,是指客户端和服务器结构
B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构
2、网络编程三要素
1.网络协议
2.IP地址
3.端口号
3、网络通信协议
不同计算机传输数据的规则
(1)UDP协议,属于传输层协议
UDP: 相当于寄快递,传输数据不安全
1.不需要连接
2.数据可能会丢失
3.速度快
4.每个包最大64kb
应用场景:
1.NBA直播
2.局域网的游戏
(2)TCP协议,属于应用层协议
TCP: 打电话, 传输数据安全
1.需要连接
2.数据不会丢失
3.速度慢
4.建立连接后是以流的形式传输,没有大小限制
应用场景:
1.支付宝扫码付钱
2.聊天程序.
3.下载
4、IP地址
(1)概念:
Internet Protocal Address: 互联网协议地址,每台联网的计算机都会分配一个IP地址(相当于家庭住址)。
(2)作用:
通过IP地址就可以找到某台电脑
(3)分类:
IPV4:点分十进制,例如192.168.84.100 范围:每段的范围0~255
IPV6:冒分十六进制 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
(4)特殊的ip地址
127.0.0.1: 找本机(本地回环地址)
(5)关于IP的DOS命令行命令
a、查看本机ip地址: ipconfig
b、测试网络是否通畅:ping IP地址/域名/网址
5、端口
(1)概念:
每个联网的程序都会使用一个端口号,通过端口号可以找到电脑上的某个程序(房间号)
(2)端口号范围:
一台电脑端口号的范围:0~65535, 0~1024被操作系统或知名软件使用了.我们使用1024以后的。只有程序运行的起来的时候才会使用端口号
2、IP地址类:InetAddress
(1)概念
代表一个IP地址对象
(2)构造方法(都是静态方法)
static InetAddress getLocalHost() 获取【本机】的IP地址
static InetAddress getByName(String host) 通过【IP地址/域名字符串】得到InetAddress对象
(2)成员方法
String getHostAddress() 返回IP地址字符串
String getHostName() 返回主机名
public static void main(String[] args) throws UnknownHostException {
//构造方法1
// static InetAddress getLocalHost() 获取本机的IP地址
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("localHost = " + localHost); // "DESKTOP-6MABD4P/192.168.84.99"
//普通方法
System.out.println("getHostAddress:" + localHost.getHostAddress()); // 192.168.84.99
System.out.println("getHostName: " + localHost.getHostName()); // DESKTOP-6MABD4P
//构造方法2
// static InetAddress getByName(String host) 通过IP地址/域名字符串得到InetAddress对象
InetAddress byName = InetAddress.getByName("192.168.84.99");
System.out.println("byName = " + byName);
InetAddress bxg = InetAddress.getByName("ntlias3.boxuegu.com");
System.out.println("bxg = " + bxg);
}
3、UDP传输数据
1、UDP传输数据,需要:
发送端,接收端以及他们的数据包
2、发送端 + 接收端—DatagramSocket类
DatagramSocket类的API
//构造方法
DatagramSocket() //创建一个UDP【发送端】,随机绑定一个端口 (UDP发送端)
DatagramSocket(int port) //创建一个UDP【接收端】,绑定要指定的端口 (UDP接收端)
成员方法
void send(DatagramPacket p) //发送数据的
void receive(DatagramPacket p) //接收数据
3、数据包—DatagramPacket类
DatagramPacket类的API
//构造方法
DatagramPacket(byte[] buf, int length) //创建空的数据包,用来接收数据的(接收数据的包)
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) //创建一个有数据的数据包,用来发送的
//成员方法
int getLength()//得到包已接收到的数据长度
String getAddress();//得到发送端的IP
String getPort();//得到发送端的端口号
4、UDP数据传输的实现步骤及其代码
(1)建立发送端步骤:
1.创建发送端
2.创建一个【有数据的】数据包(DatagramPacket)(创建一封信)
3.调用发送端的【发送方法】
4.关闭资源
(2)建立接收端步骤:
1.创建一个接收端
2.创建一个【空的】数据包
3.调用接收端的【接收方法】
4.操作数据
5.关闭资源
注意:
接收端一定要有固定的端口让发送端能够找到
先运行接收端,后运行发送端
(3)发送端代码实现
public static void main(String[] args) throws IOException {
System.out.println("发送端启动啦!");
// UDP发送端(DatagramSocket)
// 1.创建发送端
// DatagramSocket() 创建一个UDP发送端,随机绑定一个端口 (UDP发送端)
DatagramSocket socket = new DatagramSocket();
// 2.创建一个数据包(DatagramPacket)(创建一封信)
String str = "你好,约吗?";
byte[] bytes = str.getBytes();
DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length, InetAddress.getLocalHost(), 6666);
// 3.调用发送端的发送方法
// void send(DatagramPacket p) 发送数据的
socket.send(packet);
// 4.关闭资源
socket