⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 right8_3_14.htm

📁 清华JAVA教程。不用多说了吧
💻 HTM
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">  <tr>     <td valign="top">       <table width="97%" border="0" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF" align="center">        <tr>          <td height="244" valign="top">             <p class="pt9-black">  <span class="zhongdian">1. 客户方程序:MulticastClient.java<a name="01"></a></span><br>              <br>                import java.io.*;<br>                import java.net.*;<br>                import java.util.*;<br>                public class MulticastClient {<br>                  public static void main(String args[]) throws IOException<br>                  {<br>                   MulticastSocket socket=new MulticastSocket(4446); <br>                   <font color="339900">//创建4446端口的广播套接字</font><br>                   InetAddress address=InetAddress.getByName(&quot;230.0.0.1&quot;);	              <br>                   <font color="339900">//得到230.0.0.1的地址信息</font><br>                   socket.joinGroup(address); <br>                   <font color="339900">//使用joinGroup()将广播套接字绑定到地址上</font><br>                   DatagramPacket packet;</p>            <p class="pt9-black">     for(int i=0;i&lt;5;i++) {<br>                     byte[] buf=new byte[256]; <br>                     <font color="339900">//创建缓冲区</font><br>                     packet=new DatagramPacket(buf,buf.length); <br>                     <font color="339900">//创建接收数据报</font><br>                     socket.receive(packet); <font color="339900">//接收</font><br>                     String received=new String(packet.getData()); <br>                     <font color="339900">//由接收到的数据报得到字节数组,</font><br>                     <font color="339900">//并由此构造一个String对象</font><br>                     System.out.println(&quot;Quote of theMoment:&quot;+received);               <br>                     <font color="339900">//打印得到的字符串</font><br>                   } <font color="339900">//循环5次</font><br>                   socket.leaveGroup(address); <br>                   <font color="339900">//把广播套接字从地址上解除绑定</font><br>                   socket.close(); <font color="339900">//关闭广播套接字</font><br>                 }<br>               }</p>            <p class="pt9-black"> <span class="zhongdian">2. 服务器方程序:MulticastServer.java<a name="02"></a></span><br>              <br>                public class MulticastServer{<br>                  public static void main(String args[]) throws java.io.IOException               <br>                  {<br>                    new MulticastServerThread().start(); <br>                    <font color="339900">//启动一个服务器线程</font><br>                  }<br>                }</p>            <p class="pt9-black"> <span class="zhongdian">3. 程序MulticastServerThread.java<a name="03"></a></span><br>              <br>                import java.io.*;<br>                import java.net.*;<br>                import java.util.*;<br>                public class MulticastServerThread extends QuoteServerThread <br>                <font color="339900">//从QuoteServerThread继承得到新的服务器线程类MulticastServerThread</font><br>                {<br>                  Private long FIVE_SECOND=5000; <font color="339900">//定义常量,5秒钟</font><br>                  public MulticastServerThread(String name) throws IOException               <br>                  {<br>                    super(&quot;MulticastServerThread&quot;); <br>                    <font color="339900">//调用父类,也就是QuoteServerThread的构造函数</font><br>                  }</p>            <p class="pt9-black">    public void run() <font color="339900">//重写父类的线程主体</font><br>                  {<br>                   while(moreQuotes) { <br>                   <font color="339900">//根据标志变量判断是否继续循环</font><br>                    try{<br>                      byte[] buf=new byte[256]; <br>                      <font color="339900">//创建缓冲区</font><br>                      String dString=null;<br>                      if(in==null) dString=new Date().toString(); <br>                      <font color="339900">//如果初始化的时候打开文件失败了,<br>                      //则使用日期作为要传送的字符串</font><br>                      else dString=getNextQuote(); <br>                      <font color="339900">//否则调用成员函数从文件中读出字符串</font><br>                      buf=dString.getByte(); <br>                      <font color="339900">//把String转换成字节数组,以便传送send it</font><br>                      InetAddress group=InetAddress.getByName(&quot;230.0.0.1&quot;);	              <br>                      <font color="339900">//得到230.0.0.1的地址信息</font><br>                      DatagramPacket packet=new DatagramPacket(buf,buf.length,group,4446);<br>                      <font color="339900">//根据缓冲区,广播地址,和端口号创建DatagramPacket对象</font><br>                      socket.send(packet); <font color="339900">//发送该Packet</font><br>                      try{<br>                        sleep((long)(Math.random()*FIVE_SECONDS)); <br>                        <font color="339900">//随机等待一段时间,0~5秒之间</font><br>                      }catch(InterruptedException e) { } <font color="339900">//异常处理</font><br>                    }catch(IOException e){ <font color="339900">//异常处理</font><br>                      e.printStackTrace( ); <font color="339900">//打印错误栈</font></p>            <p><span class="pt9-black">         moreQuotes=false; <font color="339900">//置结束循环标志</font><br>                    }<br>                  }<br>                  socket.close( ); <font color="339900">//关闭广播套接口</font><br>                 }<br>               }<br>              <br>                至此,Java网络编程这一章已经讲解完毕。读者通过学习,应该对网络编程有了一个清晰的认识,可能对某些概念还不是十分的清楚,还是需要更多的实践来进一步掌握。编程语言的学习不同于一般的学习,及其强调实践的重要性。读者应该对URL网络编程,Socket中的TCP,UDP编程进行大量的练习才能更好的掌握本章中所提到的一些概念,才能真正学到Java网络编程的精髓!<br>              <br>                <font color="000099">最后几个小节所举的例子,读者务必要亲自试验一下,如果遇到问题,想办法解决之。最好能根据自己的意图加以改进。这样才能更好的理解这几个程序,理解其中所包含的编程思想。</font></span><br>            </p>          </td>        </tr>      </table>    </td>  </tr></table></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -