博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URL学习笔记
阅读量:6568 次
发布时间:2019-06-24

本文共 10494 字,大约阅读时间需要 34 分钟。

不多说,先上代码,代码的注释写的已经挺详细的了

1 //URL:统一资源定位符,一个URL的对象,对应着互联网上的一个资源。 2 //我们可以通过URL的对象调用其相应的方法,将此资源读取(即所谓的“下载”) 3 public class TestURL { 4     //看URL下有哪些常用的方法 5     @Test 6     public void Testurl() throws MalformedURLException{ 7         //1.创建一个URL的对象 8         //参数部分可以传入一个网址的绝对路径,这里我传人的是我写的一篇博客的地址 9         URL url = new URL("http://www.cnblogs.com/gode/p/5812013.html");10         11         //获取该URL的协议名12         System.out.println(url.getProtocol());//http13         //获取该URL的主机名14         System.out.println(url.getHost());//www.cnblogs.com15         //获取该URL的端口号16         System.out.println(url.getPort());//-117         //获取该URL的文件路径18         System.out.println(url.getPath());//  /gode/p/5812013.html19         //获取该URL的文件名20         System.out.println(url.getFile());//  /gode/p/5812013.html21         //获取该URL在文件中的相对位置22         System.out.println(url.getRef());//null23         //获取该URL的查询名24         System.out.println(url.getQuery());//null25     }

首先先了解了URL的一些常用的方法,现在我尝试利用网址读入内容到控制台打印输出

很好奇会打印出什么东西呢

1     //如何将服务端的资源读取进来 2     @Test 3     public void Testurl1() throws Exception{ 4         //1.创建一个URL的对象 5         //参数部分可以传入一个网址的绝对路径,这里我传人的是我写的一篇博客的地址 6         URL url = new URL("http://www.cnblogs.com/gode/p/5812013.html"); 7          8         //2.URL读入的方法是openStream 9         InputStream is = url.openStream();10         11         //3.打印到控制台上试试12         byte[] b = new byte[1024];13         int length;14         while((length = is.read(b)) != -1){15             String str = new String(b,0,length);16             System.out.print(str);//这里输出的是页面布局的HTML代码,对应的汉字还有些是乱码17         }18     }

下面就是打印出来的东西

1   2   3   4 
5 浣跨敤UDP杩涜鏁版嵁鍙戦?佺殑瀹炰緥涓? - Hello.World! - 鍗氬鍥? 6
7
8
9
10
11 12 13 14 15 16 17 18
19
20
54 55
56
57
58 59
60
61
62
63

64 浣跨敤UDP杩涜鏁版嵁鍙戦?佺殑瀹炰緥涓? 65

66
67
68

棣栧厛濡傛灉TCP瀛﹁繃浠ュ悗锛屽啀鐪婾DP杩涜鏁版嵁浼犺緭涔熸槸澶у悓灏忓紓鐨勶紝鍙槸鐢ㄥ埌鐨勭被涓嶅悓

69

UDP杩涜浼犺緭闇?瑕丏ataSocket鍜孌atapacket绫伙紝Datapacket鍙暟鎹姤锛屾瘡涓?涓暟鎹姤涓嶈兘澶т簬64k锛岄兘璁板綍鐫?鏁版嵁淇℃伅锛屽彂閫佺鐨処P銆佺鍙e彿锛?

70

浠ュ強瑕佸彂閫佸埌鐨勬帴鏀剁鐨処P銆佺鍙e彿銆?

71

UDP杩涜浼犺緭鏄皢鏁版嵁鍏ㄩ儴鎵撳寘锛岀劧鍚庝竴璧峰彂杩囧幓锛屽鏄撻?犳垚鏁版嵁涓㈠け锛屼絾閫熷害杈冨揩锛屾瘮濡傝涓嬭浇涓?涓數褰憋紝缂哄け鍑犱睛骞舵病鏈変粈涔堝奖鍝嶏紝浣嗛渶瑕佸揩閫熶笅杞斤紝杩欎釜鏃跺?欏彲浠ラ?夋嫨UDP杩涜浼犺緭锛屾墍璋撳悇鏈夋墍闀匡紝鍏蜂綋閫夋嫨閭g鏂瑰紡杩樻槸瑕佺湅鍏蜂綋闇?瑕併??

72

鎺ヤ笅鏉ラ檮鍔犱竴涓猆DP杩涜鏂囧瓧浼犺緭锛岀劧鍚庢帴鏀剁鎵撳嵃鍒版帶鍒跺彴涓?

73
74
 1 package com.UDP.java; 75  2  76  3 import java.io.IOException; 77  4 import java.net.DatagramPacket; 78  5 import java.net.DatagramSocket; 79  6 import java.net.InetAddress; 80  7 import org.junit.Test; 81  8  82  9 public class TestUDP { 83 10     // 鍙戦?佺 84 11     @Test 85 12     public void send() { 86 13         DatagramSocket ds = null; 87 14         try { 88 15             ds = new DatagramSocket(); 89 16             // 鍒涘缓涓?涓暟鎹姤锛屾瘡涓?涓暟鎹姤涓嶈兘澶т簬64k锛岄兘璁板綍鐫?鏁版嵁淇℃伅锛屽彂閫佺鐨処P銆佺鍙e彿锛屼互鍙婅鍙戦?佸埌 90 17             // 鐨勬帴鏀剁鐨処P銆佺鍙e彿銆? 91 18             byte[] b = "鎴戞槸鍙戦?佺".getBytes(); 92 19             DatagramPacket pack = new DatagramPacket(b, 0, b.length,  93 20                     InetAddress.getByName("192.168.1.101"), 9090); 94 21             ds.send(pack); 95 22         } catch (IOException e) { 96 23             e.printStackTrace(); 97 24         } finally { 98 25             if (ds != null) { 99 26                 ds.close();100 27             }101 28         }102 29     }103 30 104 31     // 鎺ユ敹绔?105 32     @Test106 33     public void receive() {107 34         DatagramSocket ds = null;108 35         try {109 36             ds = new DatagramSocket(9090);110 37             byte[] b = new byte[1024];111 38             DatagramPacket pack = new DatagramPacket(b, 0, b.length);112 39             ds.receive(pack);113 40             String str = new String(pack.getData(), 0, pack.getLength());114 41             System.out.println(str);115 42         }catch (IOException e) {116 43             e.printStackTrace();117 44         }118 45         finally{119 46             if(ds != null){120 47                 ds.close();121 48             }122 49         }123 50     }124 51 }
125
126

 

127
128
129
130
131
132
133
134
135
136 137 138
139
posted @
2016-08-26 23:29
Hello.World! 闃呰(
...) 璇勮(
...)
缂栬緫
鏀惰棌
140
141
142 143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
172
173 174 175
176
177 178
195
196
197
198
203
204 205

并不是想象中的会将我写的博客打印出来,而是打印出了页面的HTML布局代码

而教程中,使用Tomcat服务器,URL地址指定的是一个txt文档,启动Tomcat,可以将该txt文档中的内容打印出来

分析:这个URL所指的地址被封装了,不能直接找到服务器的文档(ps:如果能的话那岂不是乱套了,服务器里存储的东西想看就看)

如果此文件非文本文件呢?

我要将此文件写入本地,使用url.openConnection()方法,返回一个URLConnection的对象

具体代码如下

1 //如果既有数据的读入,又有数据的输出,就要考虑使用URLConnection 2         URLConnection urlConnection = url.openConnection(); 3         InputStream is1 = urlConnection.getInputStream(); 4         //之前打印已经发现是HTML类型的文件了,所以在这里定义成一个.html类型的文件,看看效果如何 5         FileOutputStream fos = new FileOutputStream(new File("aaa.html")); 6         byte[] b1 = new byte[1024]; 7         int length1; 8         while((length1 = is1.read(b1)) != -1){ 9             fos.write(b1, 0, length1);10         }11         fos.close();12         is1.close();

激动人心的时刻到了,打印出来的HTML文件真的是HTML文件,具体内容如下(没有乱码了)

1   2   3   4 
5 使用UDP进行数据发送的实例一 - Hello.World! - 博客园 6
7
8
9
10
11 12 13 14 15 16 17 18
19
20
54 55
56
57
58 59
60
61
62
63

64 使用UDP进行数据发送的实例一 65

66
67
68

首先如果TCP学过以后,再看UDP进行数据传输也是大同小异的,只是用到的类不同

69

UDP进行传输需要DataSocket和Datapacket类,Datapacket叫数据报,每一个数据报不能大于64k,都记录着数据信息,发送端的IP、端口号,

70

以及要发送到的接收端的IP、端口号。

71

UDP进行传输是将数据全部打包,然后一起发过去,容易造成数据丢失,但速度较快,比如要下载一个电影,缺失几侦并没有什么影响,但需要快速下载,这个时候可以选择UDP进行传输,所谓各有所长,具体选择那种方式还是要看具体需要。

72

接下来附加一个UDP进行文字传输,然后接收端打印到控制台上

73
74
 1 package com.UDP.java; 75  2  76  3 import java.io.IOException; 77  4 import java.net.DatagramPacket; 78  5 import java.net.DatagramSocket; 79  6 import java.net.InetAddress; 80  7 import org.junit.Test; 81  8  82  9 public class TestUDP { 83 10     // 发送端 84 11     @Test 85 12     public void send() { 86 13         DatagramSocket ds = null; 87 14         try { 88 15             ds = new DatagramSocket(); 89 16             // 创建一个数据报,每一个数据报不能大于64k,都记录着数据信息,发送端的IP、端口号,以及要发送到 90 17             // 的接收端的IP、端口号。 91 18             byte[] b = "我是发送端".getBytes(); 92 19             DatagramPacket pack = new DatagramPacket(b, 0, b.length,  93 20                     InetAddress.getByName("192.168.1.101"), 9090); 94 21             ds.send(pack); 95 22         } catch (IOException e) { 96 23             e.printStackTrace(); 97 24         } finally { 98 25             if (ds != null) { 99 26                 ds.close();100 27             }101 28         }102 29     }103 30 104 31     // 接收端105 32     @Test106 33     public void receive() {107 34         DatagramSocket ds = null;108 35         try {109 36             ds = new DatagramSocket(9090);110 37             byte[] b = new byte[1024];111 38             DatagramPacket pack = new DatagramPacket(b, 0, b.length);112 39             ds.receive(pack);113 40             String str = new String(pack.getData(), 0, pack.getLength());114 41             System.out.println(str);115 42         }catch (IOException e) {116 43             e.printStackTrace();117 44         }118 45         finally{119 46             if(ds != null){120 47                 ds.close();121 48             }122 49         }123 50     }124 51 }
125
126

 

127
128
129
130
131
132
133
134
135
136 137 138
139
posted @
2016-08-26 23:29
Hello.World! 阅读(
...) 评论(
...)
编辑
收藏
140
141
142 143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
172
173 174 175
176
177 178
195
196
197
198
203
204 205

这里处理异常的方式是直接throws出去了,不符合规范,正常应该全都try-catch-finally,原谅我懒了~~~

转载于:https://www.cnblogs.com/gode/p/5812138.html

你可能感兴趣的文章
将图片序列转化为视频文件
查看>>
jQuery的文档操作***
查看>>
js 小数取整,js 小数向上取整,js小数向下取整
查看>>
vue-cli3.0
查看>>
window.location.replace vs window.location.href
查看>>
CVPR 2018:阿里提出应用 LocalizedGAN 进行半监督训练
查看>>
被劫持的wordpress.com账户被用来感染站点
查看>>
分享一下最近看的东西
查看>>
《大数据、小数据、无数据:网络世界的数据学术》一 第2章 何为数据 2.1 引言...
查看>>
寓教于乐的顶峰:新一届大学生集群竞赛火热开战
查看>>
《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一第1章 职业发展机会和团队建设...
查看>>
HBase BlockCache系列 - 探求BlockCache实现机制
查看>>
【参与有奖】您用的MySQL、MongoDB、Redis等服务被勒索过吗?
查看>>
Java核心技术卷I基础知识1.2.6 体系结构中立
查看>>
Libvirt 虚拟化库介绍
查看>>
Xmemcached发布1.2.6.1(推荐升级)
查看>>
《Spring 5 官方文档》26. JMS(一)
查看>>
《Python Cookbook(第2版)中文版》——1.11 检查一个字符串是文本还是二进制
查看>>
Tkinter之Label
查看>>
PostgreSQL merge json的正确姿势
查看>>