快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
OException

如果不想接收组播包了,就调用leaveGroup方法。程序就发信息到组播路由器,通知它向此用户发送数据。若想离开的地址不是组播地址就触发IOException异常。

public void send(DatagramPacket packet, byte, ttl) throws IOExceptin

发送组播包的方法与DatagramSocket发送数据相似。其中ttl是生存时间,大小在0~255之间。

public void receive(DatagramPacket p) 与DatagramSocket的接收方法没有差别。

public void setTimeToLive(int ttl )throws IOException 设置套接字发出的组播包中的默认ttl数值。

public int getTimeToLive( ) throws IOException 返回ttl数值。

使用组播套接字发送数据的过程是首先用MulticastSocket()构造器创建MulticastSocket类,然后利用MulticastSocket类的joinGroup()方法加入一个组播组,之后创建DatagramPacket数据包,最后调用MulticastSocket类的send()方法发送组播包。

发送组播包的代码如下:

try { InetAddress address = InetAddress.getByName (www.mmm.net) ; byte[ ] data=" java networking"; int port =5000; DatagramPacket datap =new DatagramSocket (data ,data.length( ),address,port); MulticastSocket muls =new MulticastSocket ( ); muls.send(datap ); } catch(IOException ie) { }

使用组播套接字接收数据的过程是首先用MulticastSocket()构造器创建MulticastSocket类,然后利用MulticastSocket类的joinGroup()方法加入一个组播组,之后用receive()方法接收组播包。我们发现其过程与UDP包的过程很相似,区别是要加入一个组播组。

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

时间:2010-12-15

5 实例:组播套接字C/S程序

下面的程序示例12-12说明了组播套接字的基本用法。

【程序源代码】

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

2 // 程序名称:示例12-12: MulticastServer.java 3 // 程序目的:创建一个组播服务器 4 //========================================================== 5 import java.io.*; 6 import java.net.*; 7 import java.util.*; 8 9 class QuoteServerThread extends Thread 10 { 11 protected DatagramSocket socket = null; 12 protected BufferedReader in = null; 13 protected boolean moreQuotes = true; 14 15 public QuoteServerThread() throws IOException { 16 this("QuoteServerThread"); 17 } 18 19 public QuoteServerThread(String name) throws IOException { 20 super(name); 21 socket = new DatagramSocket(4445); 22 23 try { 24 in = new BufferedReader(new FileReader("one-liners.txt")); 25 } catch (FileNotFoundException e) { 26 System.err.println("Could not open quote file. Serving time instead."); 27 } 28 } 29 30 public void run() { 31 while (moreQuotes) { 32 try { 33 byte[] buf = new byte[256]; 34 35 // 获取请求 36 DatagramPacket packet = new DatagramPacket(buf, buf.length); 37 socket.receive(packet); 38 39 // 进行响应 40 String dString = null; 41 if (in == null) 42 dString = new Date().toString(); 43 else 44 dString = getNextQuote(); 45 buf = dString.getBytes(); 46 47 // 向用户发送响应 48 InetAddress address = packet.getAddress(); 49 int port = packet.getPort(); 50 packet = new DatagramPacket(buf, buf.length, address, port); 51 socket.send(packet); 52 } 53 catch (IOException e) { 54 e.printStackTrace(); 55 moreQuotes = false; 56 } 57 } 58

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号