11---网络基础 + IP地址类InetAddress + UDP传输数据 + TCP传输数据

本文介绍了网络编程的基础知识,包括两种模式、网络编程三要素和网络通信协议。详细讲解了UDP和TCP协议,以及IP地址类InetAddress的使用。还通过实例演示了UDP和TCP数据的传输过程,包括DatagramSocket、DatagramPacket、Socket和ServerSocket的使用,并提供了文件上传的案例练习。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值