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

导读:本篇文章讲解 Java 网络编程系列③ — UDP网络编程 和 URL网络编程,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

也许你感觉自己的努力总是徒劳无功,但不必怀疑,你每天都离顶点更进一步。今天的你离顶点还遥遥无期。但你通过今天的努力,积蓄了明天勇攀高峰的力量。加油!

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();
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122315.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!