zoukankan      html  css  js  c++  java
  • URL学习笔记

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

     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());//http
    13         //获取该URL的主机名
    14         System.out.println(url.getHost());//www.cnblogs.com
    15         //获取该URL的端口号
    16         System.out.println(url.getPort());//-1
    17         //获取该URL的文件路径
    18         System.out.println(url.getPath());//  /gode/p/5812013.html
    19         //获取该URL的文件名
    20         System.out.println(url.getFile());//  /gode/p/5812013.html
    21         //获取该URL在文件中的相对位置
    22         System.out.println(url.getRef());//null
    23         //获取该URL的查询名
    24         System.out.println(url.getQuery());//null
    25     }


    首先先了解了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 <!DOCTYPE html>
      2 <html lang="zh-cn">
      3 <head>
      4 <meta charset="utf-8"/>
      5 <title>浣跨敤UDP杩涜�鏁版嵁鍙戦?佺殑瀹炰緥涓? - Hello.World! - 鍗氬�鍥?</title>
      6 <link type="text/css" rel="stylesheet" href="/bundles/blog-common.css?v=Ugwf7ssw_T-Y4bsdVDPHPhPR9NEESRNHOF-E8IRqEJk1"/>
      7 <link id="MainCss" type="text/css" rel="stylesheet" href="/skins/CodingLife/bundle-CodingLife.css?v=dE43LeVMdRWr6dflRs5MpsAmgg8oyLrU-UvBlmYDLvg1"/>
      8 <link title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cnblogs.com/gode/rss"/>
      9 <link title="RSD" type="application/rsd+xml" rel="EditURI" href="http://www.cnblogs.com/gode/rsd.xml"/>
     10 <link type="application/wlwmanifest+xml" rel="wlwmanifest" href="http://www.cnblogs.com/gode/wlwmanifest.xml"/>
     11 <script src="//common.cnblogs.com/script/jquery.js" type="text/javascript"></script>  
     12 <script type="text/javascript">var currentBlogApp = 'gode', cb_enable_mathjax=false;var isLogined=false;</script>
     13 <script src="/bundles/blog-common.js?v=Q7JqGMCRFJwGRojUTJLkQ6nIu4kUBVwm5mErn4um_MM1" type="text/javascript"></script>
     14 </head>
     15 <body>
     16 <a name="top"></a>
     17 
     18 <!--done-->
     19 <div id="home">
     20 <div id="header">
     21     <div id="blogTitle">
     22     <a id="lnkBlogLogo" href="http://www.cnblogs.com/gode/"><img id="blogLogo" src="/Skins/custom/images/logo.gif" alt="杩斿洖涓婚〉" /></a>            
     23         
     24 <!--done-->
     25 <h1><a id="Header1_HeaderTitle" class="headermaintitle" href="http://www.cnblogs.com/gode/">Hello.World!</a></h1>
     26 <h2></h2>
     27 
     28 
     29 
     30         
     31     </div><!--end: blogTitle 鍗氬�鐨勬爣棰樺拰鍓�爣棰? -->
     32     <div id="navigator">
     33         
     34 <ul id="navList">
     35 <li><a id="MyLinks1_HomeLink" class="menu" href="http://www.cnblogs.com/">鍗氬�鍥?</a></li>
     36 <li><a id="MyLinks1_MyHomeLink" class="menu" href="http://www.cnblogs.com/gode/">棣栭〉</a></li>
     37 <li><a id="MyLinks1_NewPostLink" class="menu" rel="nofollow" href="https://i.cnblogs.com/EditPosts.aspx?opt=1">鏂伴殢绗?</a></li>
     38 <li><a id="MyLinks1_ContactLink" class="menu" rel="nofollow" href="http://msg.cnblogs.com/send/Hello.World%21">鑱旂郴</a></li>
     39 <li><a id="MyLinks1_Syndication" class="menu" href="http://www.cnblogs.com/gode/rss">璁㈤槄</a>
     40 <!--<a id="MyLinks1_XMLLink" class="aHeaderXML" href="http://www.cnblogs.com/gode/rss"><img src="//www.cnblogs.com/images/xml.gif" alt="璁㈤槄" /></a>--></li>
     41 <li><a id="MyLinks1_Admin" class="menu" rel="nofollow" href="https://i.cnblogs.com/">绠$悊</a></li>
     42 </ul>
     43         <div class="blogStats">
     44             
     45             
     46 <span id="stats_post_count">闅忕瑪 - 2&nbsp; </span>
     47 <span id="stats_article_count">鏂囩珷 - 0&nbsp; </span>
     48 <span id="stats-comment_count">璇勮� - 0</span>
     49 
     50             
     51         </div><!--end: blogStats -->
     52     </div><!--end: navigator 鍗氬�瀵艰埅鏍? -->
     53 </div><!--end: header 澶撮儴 -->
     54 
     55 <div id="main">
     56     <div id="mainContent">
     57     <div class="forFlow">
     58         
     59 <div id="post_detail">
     60 <!--done-->
     61 <div id="topics">
     62     <div class = "post">
     63         <h1 class = "postTitle">
     64             <a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/gode/p/5812013.html">浣跨敤UDP杩涜�鏁版嵁鍙戦?佺殑瀹炰緥涓?</a>
     65         </h1>
     66         <div class="clear"></div>
     67         <div class="postBody">
     68             <div id="cnblogs_post_body"><p>棣栧厛濡傛灉TCP瀛﹁繃浠ュ悗锛屽啀鐪婾DP杩涜�鏁版嵁浼犺緭涔熸槸澶у悓灏忓紓鐨勶紝鍙�槸鐢ㄥ埌鐨勭被涓嶅悓</p>
     69 <p>UDP杩涜�浼犺緭闇?瑕丏ataSocket鍜孌atapacket绫伙紝Datapacket鍙�暟鎹�姤锛屾瘡涓?涓�暟鎹�姤涓嶈兘澶т簬64k锛岄兘璁板綍鐫?鏁版嵁淇℃伅锛屽彂閫佺�鐨処P銆佺�鍙e彿锛?</p>
     70 <p>浠ュ強瑕佸彂閫佸埌鐨勬帴鏀剁�鐨処P銆佺�鍙e彿銆?</p>
     71 <p>UDP杩涜�浼犺緭鏄�皢鏁版嵁鍏ㄩ儴鎵撳寘锛岀劧鍚庝竴璧峰彂杩囧幓锛屽�鏄撻?犳垚鏁版嵁涓㈠け锛屼絾閫熷害杈冨揩锛屾瘮濡傝�涓嬭浇涓?涓�數褰憋紝缂哄け鍑犱睛骞舵病鏈変粈涔堝奖鍝嶏紝浣嗛渶瑕佸揩閫熶笅杞斤紝杩欎釜鏃跺?欏彲浠ラ?夋嫨UDP杩涜�浼犺緭锛屾墍璋撳悇鏈夋墍闀匡紝鍏蜂綋閫夋嫨閭g�鏂瑰紡杩樻槸瑕佺湅鍏蜂綋闇?瑕併??</p>
     72 <p>鎺ヤ笅鏉ラ檮鍔犱竴涓猆DP杩涜�鏂囧瓧浼犺緭锛岀劧鍚庢帴鏀剁�鎵撳嵃鍒版帶鍒跺彴涓?</p>
     73 <div class="cnblogs_code">
     74 <pre><span style="color: #008080;user-select:none;"> 1</span> <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.UDP.java;
     75 </span><span style="color: #008080;user-select:none;"> 2</span> 
     76 <span style="color: #008080;user-select:none;"> 3</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.IOException;
     77 </span><span style="color: #008080;user-select:none;"> 4</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.net.DatagramPacket;
     78 </span><span style="color: #008080;user-select:none;"> 5</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.net.DatagramSocket;
     79 </span><span style="color: #008080;user-select:none;"> 6</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.net.InetAddress;
     80 </span><span style="color: #008080;user-select:none;"> 7</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.Test;
     81 </span><span style="color: #008080;user-select:none;"> 8</span> 
     82 <span style="color: #008080;user-select:none;"> 9</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> TestUDP {
     83 </span><span style="color: #008080;user-select:none;">10</span>     <span style="color: #008000;">//</span><span style="color: #008000;"> 鍙戦?佺�</span>
     84 <span style="color: #008080;user-select:none;">11</span> <span style="color: #000000;">    @Test
     85 </span><span style="color: #008080;user-select:none;">12</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> send() {
     86 </span><span style="color: #008080;user-select:none;">13</span>         DatagramSocket ds = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
     87 </span><span style="color: #008080;user-select:none;">14</span>         <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
     88 </span><span style="color: #008080;user-select:none;">15</span>             ds = <span style="color: #0000ff;">new</span><span style="color: #000000;"> DatagramSocket();
     89 </span><span style="color: #008080;user-select:none;">16</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 鍒涘缓涓?涓�暟鎹�姤锛屾瘡涓?涓�暟鎹�姤涓嶈兘澶т簬64k锛岄兘璁板綍鐫?鏁版嵁淇℃伅锛屽彂閫佺�鐨処P銆佺�鍙e彿锛屼互鍙婅�鍙戦?佸埌
     90 </span><span style="color: #008080;user-select:none;">17</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 鐨勬帴鏀剁�鐨処P銆佺�鍙e彿銆?</span>
     91 <span style="color: #008080;user-select:none;">18</span>             <span style="color: #0000ff;">byte</span>[] b = "鎴戞槸鍙戦?佺�"<span style="color: #000000;">.getBytes();
     92 </span><span style="color: #008080;user-select:none;">19</span>             DatagramPacket pack = <span style="color: #0000ff;">new</span> DatagramPacket(b, 0<span style="color: #000000;">, b.length, 
     93 </span><span style="color: #008080;user-select:none;">20</span>                     InetAddress.getByName("192.168.1.101"), 9090<span style="color: #000000;">);
     94 </span><span style="color: #008080;user-select:none;">21</span> <span style="color: #000000;">            ds.send(pack);
     95 </span><span style="color: #008080;user-select:none;">22</span>         } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IOException e) {
     96 </span><span style="color: #008080;user-select:none;">23</span> <span style="color: #000000;">            e.printStackTrace();
     97 </span><span style="color: #008080;user-select:none;">24</span>         } <span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
     98 </span><span style="color: #008080;user-select:none;">25</span>             <span style="color: #0000ff;">if</span> (ds != <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
     99 </span><span style="color: #008080;user-select:none;">26</span> <span style="color: #000000;">                ds.close();
    100 </span><span style="color: #008080;user-select:none;">27</span> <span style="color: #000000;">            }
    101 </span><span style="color: #008080;user-select:none;">28</span> <span style="color: #000000;">        }
    102 </span><span style="color: #008080;user-select:none;">29</span> <span style="color: #000000;">    }
    103 </span><span style="color: #008080;user-select:none;">30</span> 
    104 <span style="color: #008080;user-select:none;">31</span>     <span style="color: #008000;">//</span><span style="color: #008000;"> 鎺ユ敹绔?</span>
    105 <span style="color: #008080;user-select:none;">32</span> <span style="color: #000000;">    @Test
    106 </span><span style="color: #008080;user-select:none;">33</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> receive() {
    107 </span><span style="color: #008080;user-select:none;">34</span>         DatagramSocket ds = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
    108 </span><span style="color: #008080;user-select:none;">35</span>         <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
    109 </span><span style="color: #008080;user-select:none;">36</span>             ds = <span style="color: #0000ff;">new</span> DatagramSocket(9090<span style="color: #000000;">);
    110 </span><span style="color: #008080;user-select:none;">37</span>             <span style="color: #0000ff;">byte</span>[] b = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">byte</span>[1024<span style="color: #000000;">];
    111 </span><span style="color: #008080;user-select:none;">38</span>             DatagramPacket pack = <span style="color: #0000ff;">new</span> DatagramPacket(b, 0<span style="color: #000000;">, b.length);
    112 </span><span style="color: #008080;user-select:none;">39</span> <span style="color: #000000;">            ds.receive(pack);
    113 </span><span style="color: #008080;user-select:none;">40</span>             String str = <span style="color: #0000ff;">new</span> String(pack.getData(), 0<span style="color: #000000;">, pack.getLength());
    114 </span><span style="color: #008080;user-select:none;">41</span> <span style="color: #000000;">            System.out.println(str);
    115 </span><span style="color: #008080;user-select:none;">42</span>         }<span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IOException e) {
    116 </span><span style="color: #008080;user-select:none;">43</span> <span style="color: #000000;">            e.printStackTrace();
    117 </span><span style="color: #008080;user-select:none;">44</span> <span style="color: #000000;">        }
    118 </span><span style="color: #008080;user-select:none;">45</span>         <span style="color: #0000ff;">finally</span><span style="color: #000000;">{
    119 </span><span style="color: #008080;user-select:none;">46</span>             <span style="color: #0000ff;">if</span>(ds != <span style="color: #0000ff;">null</span><span style="color: #000000;">){
    120 </span><span style="color: #008080;user-select:none;">47</span> <span style="color: #000000;">                ds.close();
    121 </span><span style="color: #008080;user-select:none;">48</span> <span style="color: #000000;">            }
    122 </span><span style="color: #008080;user-select:none;">49</span> <span style="color: #000000;">        }
    123 </span><span style="color: #008080;user-select:none;">50</span> <span style="color: #000000;">    }
    124 </span><span style="color: #008080;user-select:none;">51</span> }</pre>
    125 </div>
    126 <p>&nbsp;</p></div><div id="MySignature"></div>
    127 <div class="clear"></div>
    128 <div id="blog_post_info_block">
    129 <div id="BlogPostCategory"></div>
    130 <div id="EntryTag"></div>
    131 <div id="blog_post_info">
    132 </div>
    133 <div class="clear"></div>
    134 <div id="post_next_prev"></div>
    135 </div>
    136 
    137 
    138         </div>
    139         <div class = "postDesc">posted @ <span id="post-date">2016-08-26 23:29</span> <a href='http://www.cnblogs.com/gode/'>Hello.World!</a> 闃呰�(<span id="post_view_count">...</span>) 璇勮�(<span id="post_comment_count">...</span>)  <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=5812013" rel="nofollow">缂栬緫</a> <a href="#" onclick="AddToWz(5812013);return false;">鏀惰棌</a></div>
    140     </div>
    141     <script type="text/javascript">var allowComments=true,cb_blogId=301422,cb_entryId=5812013,cb_blogApp=currentBlogApp,cb_blogUserGuid='a076c060-2898-e511-9fc1-ac853d9f53cc',cb_entryCreatedDate='2016/8/26 23:29:00';loadViewCount(cb_entryId);</script>
    142     
    143 </div><!--end: topics 鏂囩珷銆佽瘎璁哄�鍣?-->
    144 </div><a name="!comments"></a><div id="blog-comments-placeholder"></div><script type="text/javascript">var commentManager = new blogCommentManager();commentManager.renderComments(0);</script>
    145 <div id='comment_form' class='commentform'>
    146 <a name='commentform'></a>
    147 <div id='divCommentShow'></div>
    148 <div id='comment_nav'><span id='span_refresh_tips'></span><a href='javascript:void(0);' onclick='return RefreshCommentList();' id='lnk_RefreshComments' runat='server' clientidmode='Static'>鍒锋柊璇勮�</a><a href='#' onclick='return RefreshPage();'>鍒锋柊椤甸潰</a><a href='#top'>杩斿洖椤堕儴</a></div>
    149 <div id='comment_form_container'></div>
    150 <div class='ad_text_commentbox' id='ad_text_under_commentbox'></div>
    151 <div id='ad_t2'></div>
    152 <div id='opt_under_post'></div>
    153 <div id='ad_c1' class='c_ad_block'></div>
    154 <div id='under_post_news'></div>
    155 <div id='ad_c2' class='c_ad_block'></div>
    156 <div id='under_post_kb'></div>
    157 <div id='HistoryToday' class='c_ad_block'></div>
    158 <script type='text/javascript'>
    159 $(function () {
    160     setTimeout(function () { incrementViewCount(cb_entryId); }, 50);
    161     deliverAdT2();
    162     deliverAdC1();
    163     deliverAdC2();    
    164     loadNewsAndKb();
    165     loadBlogSignature();
    166     LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
    167     GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate);
    168     loadOptUnderPost();
    169     GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);    
    170 });
    171 </script>
    172 </div>
    173 
    174 
    175     </div><!--end: forFlow -->
    176     </div><!--end: mainContent 涓讳綋鍐呭�瀹瑰櫒-->
    177 
    178     <div id="sideBar">
    179         <div id="sideBarMain">
    180             
    181 <!--done-->
    182 <div class="newsItem">
    183 <h3 class="catListTitle">鍏�憡</h3>
    184     <div id="blog-news"></div><script type="text/javascript">loadBlogNews();</script>
    185 </div>
    186 
    187             <div id="blog-calendar" style="display:none"></div><script type="text/javascript">loadBlogDefaultCalendar();</script>
    188             
    189             <div id="leftcontentcontainer">
    190                 <div id="blog-sidecolumn"></div><script type="text/javascript">loadBlogSideColumn();</script>
    191             </div>
    192             
    193         </div><!--end: sideBarMain -->
    194     </div><!--end: sideBar 渚ц竟鏍忓�鍣? -->
    195     <div class="clear"></div>
    196     </div><!--end: main -->
    197     <div class="clear"></div>
    198     <div id="footer">
    199         
    200 <!--done-->
    201 Copyright &copy;2016 Hello.World!
    202     </div><!--end: footer -->
    203 </div><!--end: home 鑷�畾涔夌殑鏈?澶у�鍣? -->
    204 </body>
    205 </html>


    并不是想象中的会将我写的博客打印出来,而是打印出了页面的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 <!DOCTYPE html>
      2 <html lang="zh-cn">
      3 <head>
      4 <meta charset="utf-8"/>
      5 <title>使用UDP进行数据发送的实例一 - Hello.World! - 博客园</title>
      6 <link type="text/css" rel="stylesheet" href="/bundles/blog-common.css?v=Ugwf7ssw_T-Y4bsdVDPHPhPR9NEESRNHOF-E8IRqEJk1"/>
      7 <link id="MainCss" type="text/css" rel="stylesheet" href="/skins/CodingLife/bundle-CodingLife.css?v=dE43LeVMdRWr6dflRs5MpsAmgg8oyLrU-UvBlmYDLvg1"/>
      8 <link title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cnblogs.com/gode/rss"/>
      9 <link title="RSD" type="application/rsd+xml" rel="EditURI" href="http://www.cnblogs.com/gode/rsd.xml"/>
     10 <link type="application/wlwmanifest+xml" rel="wlwmanifest" href="http://www.cnblogs.com/gode/wlwmanifest.xml"/>
     11 <script src="//common.cnblogs.com/script/jquery.js" type="text/javascript"></script>  
     12 <script type="text/javascript">var currentBlogApp = 'gode', cb_enable_mathjax=false;var isLogined=false;</script>
     13 <script src="/bundles/blog-common.js?v=Q7JqGMCRFJwGRojUTJLkQ6nIu4kUBVwm5mErn4um_MM1" type="text/javascript"></script>
     14 </head>
     15 <body>
     16 <a name="top"></a>
     17 
     18 <!--done-->
     19 <div id="home">
     20 <div id="header">
     21     <div id="blogTitle">
     22     <a id="lnkBlogLogo" href="http://www.cnblogs.com/gode/"><img id="blogLogo" src="/Skins/custom/images/logo.gif" alt="返回主页" /></a>            
     23         
     24 <!--done-->
     25 <h1><a id="Header1_HeaderTitle" class="headermaintitle" href="http://www.cnblogs.com/gode/">Hello.World!</a></h1>
     26 <h2></h2>
     27 
     28 
     29 
     30         
     31     </div><!--end: blogTitle 博客的标题和副标题 -->
     32     <div id="navigator">
     33         
     34 <ul id="navList">
     35 <li><a id="MyLinks1_HomeLink" class="menu" href="http://www.cnblogs.com/">博客园</a></li>
     36 <li><a id="MyLinks1_MyHomeLink" class="menu" href="http://www.cnblogs.com/gode/">首页</a></li>
     37 <li><a id="MyLinks1_NewPostLink" class="menu" rel="nofollow" href="https://i.cnblogs.com/EditPosts.aspx?opt=1">新随笔</a></li>
     38 <li><a id="MyLinks1_ContactLink" class="menu" rel="nofollow" href="http://msg.cnblogs.com/send/Hello.World%21">联系</a></li>
     39 <li><a id="MyLinks1_Syndication" class="menu" href="http://www.cnblogs.com/gode/rss">订阅</a>
     40 <!--<a id="MyLinks1_XMLLink" class="aHeaderXML" href="http://www.cnblogs.com/gode/rss"><img src="//www.cnblogs.com/images/xml.gif" alt="订阅" /></a>--></li>
     41 <li><a id="MyLinks1_Admin" class="menu" rel="nofollow" href="https://i.cnblogs.com/">管理</a></li>
     42 </ul>
     43         <div class="blogStats">
     44             
     45             
     46 <span id="stats_post_count">随笔 - 2&nbsp; </span>
     47 <span id="stats_article_count">文章 - 0&nbsp; </span>
     48 <span id="stats-comment_count">评论 - 0</span>
     49 
     50             
     51         </div><!--end: blogStats -->
     52     </div><!--end: navigator 博客导航栏 -->
     53 </div><!--end: header 头部 -->
     54 
     55 <div id="main">
     56     <div id="mainContent">
     57     <div class="forFlow">
     58         
     59 <div id="post_detail">
     60 <!--done-->
     61 <div id="topics">
     62     <div class = "post">
     63         <h1 class = "postTitle">
     64             <a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/gode/p/5812013.html">使用UDP进行数据发送的实例一</a>
     65         </h1>
     66         <div class="clear"></div>
     67         <div class="postBody">
     68             <div id="cnblogs_post_body"><p>首先如果TCP学过以后,再看UDP进行数据传输也是大同小异的,只是用到的类不同</p>
     69 <p>UDP进行传输需要DataSocket和Datapacket类,Datapacket叫数据报,每一个数据报不能大于64k,都记录着数据信息,发送端的IP、端口号,</p>
     70 <p>以及要发送到的接收端的IP、端口号。</p>
     71 <p>UDP进行传输是将数据全部打包,然后一起发过去,容易造成数据丢失,但速度较快,比如要下载一个电影,缺失几侦并没有什么影响,但需要快速下载,这个时候可以选择UDP进行传输,所谓各有所长,具体选择那种方式还是要看具体需要。</p>
     72 <p>接下来附加一个UDP进行文字传输,然后接收端打印到控制台上</p>
     73 <div class="cnblogs_code">
     74 <pre><span style="color: #008080;user-select:none;"> 1</span> <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.UDP.java;
     75 </span><span style="color: #008080;user-select:none;"> 2</span> 
     76 <span style="color: #008080;user-select:none;"> 3</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.IOException;
     77 </span><span style="color: #008080;user-select:none;"> 4</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.net.DatagramPacket;
     78 </span><span style="color: #008080;user-select:none;"> 5</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.net.DatagramSocket;
     79 </span><span style="color: #008080;user-select:none;"> 6</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.net.InetAddress;
     80 </span><span style="color: #008080;user-select:none;"> 7</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.Test;
     81 </span><span style="color: #008080;user-select:none;"> 8</span> 
     82 <span style="color: #008080;user-select:none;"> 9</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> TestUDP {
     83 </span><span style="color: #008080;user-select:none;">10</span>     <span style="color: #008000;">//</span><span style="color: #008000;"> 发送端</span>
     84 <span style="color: #008080;user-select:none;">11</span> <span style="color: #000000;">    @Test
     85 </span><span style="color: #008080;user-select:none;">12</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> send() {
     86 </span><span style="color: #008080;user-select:none;">13</span>         DatagramSocket ds = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
     87 </span><span style="color: #008080;user-select:none;">14</span>         <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
     88 </span><span style="color: #008080;user-select:none;">15</span>             ds = <span style="color: #0000ff;">new</span><span style="color: #000000;"> DatagramSocket();
     89 </span><span style="color: #008080;user-select:none;">16</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 创建一个数据报,每一个数据报不能大于64k,都记录着数据信息,发送端的IP、端口号,以及要发送到
     90 </span><span style="color: #008080;user-select:none;">17</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 的接收端的IP、端口号。</span>
     91 <span style="color: #008080;user-select:none;">18</span>             <span style="color: #0000ff;">byte</span>[] b = "我是发送端"<span style="color: #000000;">.getBytes();
     92 </span><span style="color: #008080;user-select:none;">19</span>             DatagramPacket pack = <span style="color: #0000ff;">new</span> DatagramPacket(b, 0<span style="color: #000000;">, b.length, 
     93 </span><span style="color: #008080;user-select:none;">20</span>                     InetAddress.getByName("192.168.1.101"), 9090<span style="color: #000000;">);
     94 </span><span style="color: #008080;user-select:none;">21</span> <span style="color: #000000;">            ds.send(pack);
     95 </span><span style="color: #008080;user-select:none;">22</span>         } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IOException e) {
     96 </span><span style="color: #008080;user-select:none;">23</span> <span style="color: #000000;">            e.printStackTrace();
     97 </span><span style="color: #008080;user-select:none;">24</span>         } <span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
     98 </span><span style="color: #008080;user-select:none;">25</span>             <span style="color: #0000ff;">if</span> (ds != <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
     99 </span><span style="color: #008080;user-select:none;">26</span> <span style="color: #000000;">                ds.close();
    100 </span><span style="color: #008080;user-select:none;">27</span> <span style="color: #000000;">            }
    101 </span><span style="color: #008080;user-select:none;">28</span> <span style="color: #000000;">        }
    102 </span><span style="color: #008080;user-select:none;">29</span> <span style="color: #000000;">    }
    103 </span><span style="color: #008080;user-select:none;">30</span> 
    104 <span style="color: #008080;user-select:none;">31</span>     <span style="color: #008000;">//</span><span style="color: #008000;"> 接收端</span>
    105 <span style="color: #008080;user-select:none;">32</span> <span style="color: #000000;">    @Test
    106 </span><span style="color: #008080;user-select:none;">33</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> receive() {
    107 </span><span style="color: #008080;user-select:none;">34</span>         DatagramSocket ds = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
    108 </span><span style="color: #008080;user-select:none;">35</span>         <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
    109 </span><span style="color: #008080;user-select:none;">36</span>             ds = <span style="color: #0000ff;">new</span> DatagramSocket(9090<span style="color: #000000;">);
    110 </span><span style="color: #008080;user-select:none;">37</span>             <span style="color: #0000ff;">byte</span>[] b = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">byte</span>[1024<span style="color: #000000;">];
    111 </span><span style="color: #008080;user-select:none;">38</span>             DatagramPacket pack = <span style="color: #0000ff;">new</span> DatagramPacket(b, 0<span style="color: #000000;">, b.length);
    112 </span><span style="color: #008080;user-select:none;">39</span> <span style="color: #000000;">            ds.receive(pack);
    113 </span><span style="color: #008080;user-select:none;">40</span>             String str = <span style="color: #0000ff;">new</span> String(pack.getData(), 0<span style="color: #000000;">, pack.getLength());
    114 </span><span style="color: #008080;user-select:none;">41</span> <span style="color: #000000;">            System.out.println(str);
    115 </span><span style="color: #008080;user-select:none;">42</span>         }<span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IOException e) {
    116 </span><span style="color: #008080;user-select:none;">43</span> <span style="color: #000000;">            e.printStackTrace();
    117 </span><span style="color: #008080;user-select:none;">44</span> <span style="color: #000000;">        }
    118 </span><span style="color: #008080;user-select:none;">45</span>         <span style="color: #0000ff;">finally</span><span style="color: #000000;">{
    119 </span><span style="color: #008080;user-select:none;">46</span>             <span style="color: #0000ff;">if</span>(ds != <span style="color: #0000ff;">null</span><span style="color: #000000;">){
    120 </span><span style="color: #008080;user-select:none;">47</span> <span style="color: #000000;">                ds.close();
    121 </span><span style="color: #008080;user-select:none;">48</span> <span style="color: #000000;">            }
    122 </span><span style="color: #008080;user-select:none;">49</span> <span style="color: #000000;">        }
    123 </span><span style="color: #008080;user-select:none;">50</span> <span style="color: #000000;">    }
    124 </span><span style="color: #008080;user-select:none;">51</span> }</pre>
    125 </div>
    126 <p>&nbsp;</p></div><div id="MySignature"></div>
    127 <div class="clear"></div>
    128 <div id="blog_post_info_block">
    129 <div id="BlogPostCategory"></div>
    130 <div id="EntryTag"></div>
    131 <div id="blog_post_info">
    132 </div>
    133 <div class="clear"></div>
    134 <div id="post_next_prev"></div>
    135 </div>
    136 
    137 
    138         </div>
    139         <div class = "postDesc">posted @ <span id="post-date">2016-08-26 23:29</span> <a href='http://www.cnblogs.com/gode/'>Hello.World!</a> 阅读(<span id="post_view_count">...</span>) 评论(<span id="post_comment_count">...</span>)  <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=5812013" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(5812013);return false;">收藏</a></div>
    140     </div>
    141     <script type="text/javascript">var allowComments=true,cb_blogId=301422,cb_entryId=5812013,cb_blogApp=currentBlogApp,cb_blogUserGuid='a076c060-2898-e511-9fc1-ac853d9f53cc',cb_entryCreatedDate='2016/8/26 23:29:00';loadViewCount(cb_entryId);</script>
    142     
    143 </div><!--end: topics 文章、评论容器-->
    144 </div><a name="!comments"></a><div id="blog-comments-placeholder"></div><script type="text/javascript">var commentManager = new blogCommentManager();commentManager.renderComments(0);</script>
    145 <div id='comment_form' class='commentform'>
    146 <a name='commentform'></a>
    147 <div id='divCommentShow'></div>
    148 <div id='comment_nav'><span id='span_refresh_tips'></span><a href='javascript:void(0);' onclick='return RefreshCommentList();' id='lnk_RefreshComments' runat='server' clientidmode='Static'>刷新评论</a><a href='#' onclick='return RefreshPage();'>刷新页面</a><a href='#top'>返回顶部</a></div>
    149 <div id='comment_form_container'></div>
    150 <div class='ad_text_commentbox' id='ad_text_under_commentbox'></div>
    151 <div id='ad_t2'></div>
    152 <div id='opt_under_post'></div>
    153 <div id='ad_c1' class='c_ad_block'></div>
    154 <div id='under_post_news'></div>
    155 <div id='ad_c2' class='c_ad_block'></div>
    156 <div id='under_post_kb'></div>
    157 <div id='HistoryToday' class='c_ad_block'></div>
    158 <script type='text/javascript'>
    159 $(function () {
    160     setTimeout(function () { incrementViewCount(cb_entryId); }, 50);
    161     deliverAdT2();
    162     deliverAdC1();
    163     deliverAdC2();    
    164     loadNewsAndKb();
    165     loadBlogSignature();
    166     LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
    167     GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate);
    168     loadOptUnderPost();
    169     GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);    
    170 });
    171 </script>
    172 </div>
    173 
    174 
    175     </div><!--end: forFlow -->
    176     </div><!--end: mainContent 主体内容容器-->
    177 
    178     <div id="sideBar">
    179         <div id="sideBarMain">
    180             
    181 <!--done-->
    182 <div class="newsItem">
    183 <h3 class="catListTitle">公告</h3>
    184     <div id="blog-news"></div><script type="text/javascript">loadBlogNews();</script>
    185 </div>
    186 
    187             <div id="blog-calendar" style="display:none"></div><script type="text/javascript">loadBlogDefaultCalendar();</script>
    188             
    189             <div id="leftcontentcontainer">
    190                 <div id="blog-sidecolumn"></div><script type="text/javascript">loadBlogSideColumn();</script>
    191             </div>
    192             
    193         </div><!--end: sideBarMain -->
    194     </div><!--end: sideBar 侧边栏容器 -->
    195     <div class="clear"></div>
    196     </div><!--end: main -->
    197     <div class="clear"></div>
    198     <div id="footer">
    199         
    200 <!--done-->
    201 Copyright &copy;2016 Hello.World!
    202     </div><!--end: footer -->
    203 </div><!--end: home 自定义的最大容器 -->
    204 </body>
    205 </html>


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

  • 相关阅读:
    C# 获取文件名及扩展名
    Javscript调用iframe框架页面中函数的方法
    jquery事件重复绑定的几种解决方法 (二)
    Jquery 点击事件重复获取叠加 (一)
    .NET 即时通信,WebSocket服务端实例
    .Net ASP.NET 打开指定文件夹
    动态 hover 使用变相使用
    给 layui upload 带每个文件的进度条, .net 后台代码
    layui upload 后台获取不到值
    ECharts配置项之title(标题)
  • 原文地址:https://www.cnblogs.com/gode/p/5812138.html
Copyright © 2011-2022 走看看