day014 网络编程【Socket网络编程】

本文详细介绍了Java中的网络编程,包括网络通信协议的基础知识,如IP地址和端口号,深入讲解了UDP和TCP协议的特性及应用场景。接着,通过实例展示了如何实现TCP的客户端和服务器端通信,以及文件上传的案例分析。最后提到了多线程在上传案例中的应用。
摘要由CSDN通过智能技术生成

1 网络通信协议

1.1 IP地址

ip地址.png

1.2 端口号

端口号.png

1.3 InetAddress基本使用

在java中,可以使用一个类表示ip地址,这个类叫做InetAddress

static InetAddress getLocalHost(): 获取到本机的ip地址对象。

static InetAddress getByName(String host):根据主机名获取到ip地址对象。

String getHostName(): 获取字符串类型的主机名。

String getHostAddress(): 获取字符串类型的ip地址。

 

 

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

/*
    在java中,可以使用一个类表示ip地址,这个类叫做InetAddress
    
    static InetAddress getLocalHost(): 获取到本机的ip地址对象。
    static InetAddress getByName(String host):根据主机名获取到ip地址对象。
    String getHostName(): 获取字符串类型的主机名。
    String getHostAddress(): 获取字符串类型的ip地址。
 */
public class Demo01InetAddress {
    public static void main(String[] args) throws IOException {
        method3();
    }
    
    /*
     * String getHostName(): 获取字符串类型的主机名。
     * String getHostAddress(): 获取字符串类型的ip地址。
     */
    public static void method3() throws IOException {
        //先获取一个InetAddress对象。
        InetAddress address = InetAddress.getLocalHost();
        //InetAddress里面封装了ip地址和主机名。
        //我们可以通过getHostName和getHostAddress单独获取到ip地址和主机名
        String hostName = address.getHostName();
        String ip = address.getHostAddress();
        
        //打印
        System.out.println("主机名为:" + hostName);
        System.out.println("ip地址为:" + ip);
    }
    
    /*
     * static InetAddress getByName(String host):根据主机名获取到ip地址对象。
     */
    public static void method2() throws IOException {
        //根据指定的主机名获取到ip地址对象
        //如果在网络中有多个相同的主机名,那么只会获取一个。
        //这个方法,不仅可以根据主机名获取ip地址对象,也可以根据字符串类型的ip地址去获取。
        //参数传递主机名是可以的,如果传递一个ip地址,也是可以的。
        InetAddress address = InetAddress.getByName("jn-pc");
        System.out.println(address);
    }
    
    
    /*
     * static InetAddress getLocalHost(): 获取到本机的ip地址对象。
     */
    public static void method1() throws IOException {
        //获取到的是本机的ip地址对象
        InetAddress address = InetAddress.getLocalHost();
        //InetAddress这个对象中不仅封装了ip地址,还封装了主机名。
        System.out.println(address);
    }
}

2 UDP和TCP协议

2.1 UDP协议

UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

特点:

1.面向无连接,传输数据的时候不需要建立连接。

2.传输的数据有大小限制(64k)

3.效率高,不安全。

使用场景:聊天,广播。

2.2 TCP协议

先建立连接,然后传输数据。

TCP三次握手.png

特点(了解)

1.面向连接,发送数据前必须建立连接。

2.传输数据没有大小限制。

3.安全,效率低。

使用场景:长传,下载。

2.3 UDP的发送与接收

UDP发送接收流程

UDP发送接收流程.png

Demo01Sender类

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;

/*
    UDP程序的发送端
    
    发送端需要用到两个类
    DatagramPacket:叫做数据报包。 相当于快递的箱子,用来封装要发送的数据。
    DatagramSocket:叫做套接字,用来发送数据报包对象。相当于快递员,用来发送数据。
    
    DatagramPacket 构造方法:
        DatagramPacket(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值