快速业务通道

Java网络编程基础(三) Datagram类使用方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
socket.close(); 59 } 60 61 protected String getNextQuote() { 62 String returnValue = null; 63 try { 64 if ((returnValue = in.readLine()) == null) { 65 in.close(); 66 moreQuotes = false; 67 returnValue = "No more quotes. Goodbye."; 68 } 69 } catch (IOException e) { 70 returnValue = "IOException occurred in server."; 71 } 72 return returnValue; 73 } 74 } 75 76 class MulticastServerThread extends QuoteServerThread 77 { 78 private long FIVE_SECONDS = 5000; 79 80 public MulticastServerThread() throws IOException { 81 super("MulticastServerThread"); 82 } 83 84 public void run() { 85 while (moreQuotes) { 86 try { 87 byte[] buf = new byte[256]; 88 89 // 构造引用 90 String dString = null; 91 if (in == null) 92 dString = new Date().toString(); 93 else 94 dString = getNextQuote(); 95 buf = dString.getBytes(); 96 97 // 发送 98 InetAddress group = InetAddress.getByName("136.122.133.1"); 99 DatagramPacket packet =new DatagramPacket(buf,buf.length,group, 100 4446); 101 socket.send(packet); 102 103 // 休眠 104 try { 105 sleep((long)(Math.random() * FIVE_SECONDS)); 106 } 107 catch (InterruptedException e) { } 108 } 109 catch (IOException e) { 110 e.printStackTrace(); 111 moreQuotes = false; 112 } 113 } 114 socket.close(); 115 } 116 } 117 118 public class MulticastServer { 119 public static void main(String[] args) throws java.io.IOException { 120 new MulticastServerThread().start(); 121 } 122 }

Java网络编程基础(三) Datagram类使用方法(8)

时间:2010-12-15

【程序注解】

服务器程序由3个类组成:QuoteServerThread,MulticastServerThread和MulticastServer。它们的关系是:QuoteServerThread继承自线程类,而MulticastServerThread类继承自类QuoteServerThread。这个程序主要的部分在QuoteServerThread和MulticastServerThread。QuoteServerThread类有两个构造函数,其中在构造函数QuoteServerThread(String name)中,初始化了DatagramSocket套接字并打开了文件one-liners.txt,在这个文件中存有服务器发送的字符串。

在QuoteServerThread类的run()函数中,服务器端套接字接收来自客户端的数据包,并从文件中读取数据,把信息发给客户端。

MulticastServerThread类中重载了run( )方法,实现的功能基本相同,在发完服务器的信息后,用sleep( )函数停止处理了一个随机的时间。

在MultiServer类中,用 new MulticastServerThread().start()开始服务器线程。我们现在只是关注其基本思想。

示例12-13是UDP组播的客户端程序。

【程序源代码】

1 // ==================== Program Description =====================

2 // 程序名称:示例12-13: MulticastClient.java 3 // 程序目的:UDP组播客户端 4 //====================>7??:示例1D==================================== 5 import java.io.*; 6 import java.net.*; 7 import java.util.*; 8 9 public class MulticastClient 10 { 11 public static void main(String[] args) throws IOException 12 { 13 MulticastSocket socket = new MulticastSocket(4446); 14 InetAddress address = InetAddress.getByName("136.122.133.1"); 15 socket.joinGroup(address); 16 DatagramPacket packet; 17 18 for (int i = 0; i < 5; i++) 19 { 20 byte[] buf = new byte[256]; 21 packet = new Dat

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号