使用Java制作多点发送程序

IP协议是Internet上所有信息的传播手段,UDP(User Datagram Protocol,用户数据报协议)数据报被封装在IP包中,发送到网络上适当的机器。众所周知,大多数IP使用单点发送,即从一个主机发送一个包到另一个主机上。然而,IP协议也具有多点发送的能力,若要使用多点发送时,一个报文标有一组目标主机地址,当报文发出后,整个组都能收到。为支持多点发送,一定范围的IP地址被单独划分出来。这些IP地址是D类地址,其范围是224.0.0.0至239.255.255.255。

IP多点发送(或多点广播)是一种相当新的技术,它是对简单广播的改进。多点广播功能类似于一个单一信息发送到多个接收者的广播,但仅发送给那些等待它的接收者。其思想就是设置一组网络地址作为多点广播地址,其范围是225.0.0.0到239.255.255.255。每一个多点广播地址都被看作一个组。当用户需要从某个地址信息时,加入到该组即可。例如,可能为其股票报价系统设置了地址225.23.32.36作为多点广播地址,如果一个想要接收股票查询报价程序,必须加入到225.23.32.36组中。

一、制作多点发送的基本知识

在使用Java进行多点发送时,它的MulticastSocket类是实现这一功能的关键。MulticastSocket类允许用户发送和接收使用多点发送IP的数据报。若要发送或接收多点广播数据,必须首先创建一个多点广播套接字(多点广播套接字类似于数据报套接字,事实上MulticastSocket是DatagramSocket的一个子类)。若要发送一个数据报时,可使用缺省的端口号创建多点广播套接字,也可以在构造器指定端口号来创建多点广播套接字:

public MulticastSocket()throws IOException

public MulticastSocket(int portNumber)throws IOException

要加入到一个多点广播地址,可使用jionGroup方法;若要脱离一个组,相使用leaveGroup方法:

public void jionGroup(InetAddress multicastAddr)throws IOException

public void leaveGroup(InetAddress multicastAddr)throws IOException

在某些系统中,可能有多重网络接口。这可能会对多点广播带来问题,因为用户需要在一个指定的接口上侦听,通过调用setInterface可选择多点广播套接字所使用的接口:

public void setInterface(InetAddress interface)throws SocketException

通过调用getInterface方法可查询多点广播套接字的接口:

public InetAddress getInterface()throws SocketException

用户在发送多点发送的数据时,使用send方法:

public synchronized void send(DatagramPacket packet, byte timeTolive)throws IOException

其中TTL值指定了数据包应该跨过多少个网络,当TTL为0时,指定数据包应停留在本地主机;当TTL的值为1时,指定数据包发送到本地网络;当TTL的值为32时,意味着只应发送到本站点的网络上;当TTL为64时,意味着数据包应保留在本地区;当TTL的值为128时,意味着数据应保留在本大洲;当TTL为255时,意味着数据包应发送到所有地方;若使用缺省的send方法时,TTL的值为1。

时间: 2016-12-25

使用Java制作多点发送程序的相关文章

用JavaMail API编写可带附件的邮件发送程序

程序 利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序.也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet. (没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath) 一.JavaMail中一些我们需要的类 1.Properties JavaMail需要Prop

DB2 NoSQL JSON 功能(三) 使用 Java API 编写应用程序

管理 JSON 文档 - 使用事务和不使用事务 概述 简介 DB2 JSON 是一个可用于 DB2 Linux, Unix and Windows 10.5 的 Technology Preview,提供了以下特性: 一个命令行 shell 用于管理和查询 JSON 数据 一个 Java API 用于应用程序开发 一个有线监听器用于接受和响应通过网络发送的请求. 图 1. DB2 JSON 组件 本文将介绍如何使用 Java 接口管理和查询 DB2 JSON 文档存储中的 JSON 文档.还将讨

JBuilder制作音频播放程序

Java是当今世界上非常流行的一种编程语言.它是由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的,是一种为Internet发展而突破用户端机器环境和CPU结构.写一次即可在任何机器上执行(Write Once,Run Anywhere)的语言. 介绍完Java的特性与优势后,我将开始介绍如何制作音频播放程序.Java中有许多可以制作音频播放的包和类,包括java.applet.AudioClip.com.sun.media.sound.JavaSoundAudi

Java实现邮件发送遇到的问题_java

发送邮件的代码是我从以前的一个应用上直接拷贝过来的.以前使用的腾讯的邮件服务,程序执行起来没有任何问题.后来修改为微软office365邮件服务后,却遇到了两个问题. 问题一,tls加密设置 异常信息如下: 复制代码 代码如下: Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonym

用java实现邮件发送验证码

java实现邮件发送验证码 网易邮箱开通POP3SMTP服务的步骤 java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好.所以建议注册个别的邮箱,我就申请了个网易163邮箱瞬间就好了.所以去申请个别的邮箱吧. 用邮件发送验证码,首先需要jar包.我写的代码只需要mail.jar,没有的话可以给我留言,我给你发个. 废话不说了直接上代码(这个代码就是个工具类直接用就好) package com.ithei

关于继承内部类——java编程思想示例程序分析

编程|程序|继承|示例 关于继承内部类--java编程思想示例程序分析:class Egg2 { protected class Yolk { public Yolk() { System.out.println("Egg2.Yolk()"); } public void f() { System.out.println("Egg2.Yolk.f()"); } } private Yolk y = new Yolk(); public Egg2() { System

很实用的一个完整email发送程序

很实用的一个完整email发送程序,很简单,把下列代码复制到一个空白文本页面,如index.php,运行就行了.具体实例:http://zsvalley.uhome.net/email/index.php. 以下是完整的源代码:(有任何问题请email:zsvalley@cmmail.com) <? if ($ok=='yes'){ //        SetCookie("yname", $yname);  //        SetCookie("yemail&qu

用VB.net制作一个小程序(2)

程序 用VB.net制作一个小程序(2)----制作"Lucky7"程序作者:高山 它是一个模拟幸运数字投币机的游戏程序.此程序的用户界面中包括两个按钮,3个幸运数字框,表示获胜的数字图象以及Lucky 7标签. Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows 窗体设计器生成的代码 " Public Sub New() MyBase.New() '该调用是 Windows

用VB.net制作一个小程序(3)

程序 用VB.net制作一个小程序(3)----制作"Input Controls"程序(3)接上 'PictureBox2 ' Me.PictureBox2.Location = New System.Drawing.Point(480, 136) Me.PictureBox2.Name = "PictureBox2" Me.PictureBox2.Size = New System.Drawing.Size(80, 56) Me.PictureBox2.Size