Java 网络编程系列③ -- UDP网络编程 和 URL网络编程

UDP网络通信

①类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。
②UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。(跟TCP是完全不一样的,TCP还要三次握手四次挥手的反复确认,而UDP则随便发,故它的效率很高。这也说明了在TCP网络通信中先启动客户端会抛异常,而在UDP网络通信种先启动客户端是可以的)
③DatagramPacket 对象封装了UDP数据报,数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号
④UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。如同发快递包裹一样。

DatagramSocket 类的常用方法

在这里插入图片描述

DatagramPacket类的常用方法

在这里插入图片描述

UDP网络通信实例

简单了解即可,在javaweb中会详细讲解。
代码实现:

 //发送端
    @Test
    public void sender() throws IOException {

        DatagramSocket socket = new DatagramSocket();

        String str = "我是UDP方式发送的信息";
        byte[] data = str.getBytes();
        InetAddress inet = InetAddress.getLocalHost();
        DatagramPacket packet = new DatagramPacket(data,0,data.length,inet,9090);

        socket.send(packet);

        socket.close();

    }
    //接收端
    @Test
    public void receiver() throws IOException {

        DatagramSocket socket = new DatagramSocket(9090);

        byte[] buffer = new byte[100];
        DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);

        socket.receive(packet);

        System.out.println(new String(packet.getData(),0,packet.getLength()));

        socket.close();
    }

URL编程

URL(Uniform Resource Locator):统一资源定位符,它表示 Internet 上某一资源的地址。它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。通过 URL 我们可以访问 Internet 上的各种网络资源,比如最常见的 www,ftp 站点。浏览器通过解析给定的 URL 可以在网络上查找相应的文件或其他资源。

URL的基本结构由5部分组成:
<传输协议>://<主机名>:<端口号>/<文件名>#片段名?参数列表
例如:
http://localhost:8080/examples/beauty.jpg?username=Tom

为了表示URL,java.net 中实现了类 URL。我们可以通过下面的构造器来初始化一个 URL 对象:

  • public URL (String spec):通过一个表示URL地址的字符串可以构造一个URL对象。例如:URL url = new URL (“http://www. baidu.com/”);
  • public URL(URL context, String spec):通过基 URL 和相对 URL 构造一个URL 对象。例如:URL downloadUrl = new URL(url, “download.html")
  • public URL(String protocol, String host, String file)例如:new URL(“http”, “www.baidu.com”, “download. html");
  • public URL(String protocol, String host, int port, String file)例如: URL gamelan = new URL(“http”, “www.baidu.com”, 80, “download.html")

URL类的构造器都声明抛出非运行时异常,必须要对这一异常进行处理,通常是用 try-catch 语句进行捕获。

一个URL对象生成后,其属性是不能被改变的,但可以通过它给定的方法来获取这些属性:
①public String getProtocol( ) 获取该URL的协议名
②public String getHost( ) 获取该URL的主机名
③public String getPort( ) 获取该URL的端口号
④public String getPath( ) 获取该URL的文件路径
⑤public String getFile( ) 获取该URL的文件名
⑥public String getQuery( ) 获取该URL的查询名

URL网络编程实现Tomcat服务端数据下载

代码实现:

public static void main(String[] args) {

        HttpURLConnection urlConnection = null;
        InputStream is = null;
        FileOutputStream fos = null;
        try {
            URL url = new URL("http://localhost:8080/examples/beauty.jpg");

            urlConnection = (HttpURLConnection) url.openConnection();

            urlConnection.connect();

            is = urlConnection.getInputStream();
            fos = new FileOutputStream("day10\\beauty3.jpg");

            byte[] buffer = new byte[1024];
            int len;
            while((len = is.read(buffer)) != -1){
                fos.write(buffer,0,len);
            }

            System.out.println("下载完成");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            if(is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(urlConnection != null){
                urlConnection.disconnect();
            }
        }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十八岁讨厌编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值