001 /* 002 * Copyright 2001-2005 The Apache Software Foundation 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.apache.commons.net; 017 018 import java.io.IOException; 019 import java.net.DatagramPacket; 020 import java.net.InetAddress; 021 022 /*** 023 * The DiscardUDPClient class is a UDP implementation of a client for the 024 * Discard protocol described in RFC 863. To use the class, 025 * just open a local UDP port 026 * with {@link org.apache.commons.net.DatagramSocketClient#open open } 027 * and call {@link #send send } to send datagrams to the server 028 * After you're done sending discard data, call 029 * {@link org.apache.commons.net.DatagramSocketClient#close close() } 030 * to clean up properly. 031 * <p> 032 * <p> 033 * @author Daniel F. Savarese 034 * @see DiscardTCPClient 035 ***/ 036 037 public class DiscardUDPClient extends DatagramSocketClient 038 { 039 /*** The default discard port. It is set to 9 according to RFC 863. ***/ 040 public static final int DEFAULT_PORT = 9; 041 042 DatagramPacket _sendPacket; 043 044 public DiscardUDPClient() 045 { 046 _sendPacket = new DatagramPacket(new byte[0], 0); 047 } 048 049 050 /*** 051 * Sends the specified data to the specified server at the specified port. 052 * <p> 053 * @param data The discard data to send. 054 * @param length The length of the data to send. Should be less than 055 * or equal to the length of the data byte array. 056 * @param host The address of the server. 057 * @param port The service port. 058 * @exception IOException If an error occurs during the datagram send 059 * operation. 060 ***/ 061 public void send(byte[] data, int length, InetAddress host, int port) 062 throws IOException 063 { 064 _sendPacket.setData(data); 065 _sendPacket.setLength(length); 066 _sendPacket.setAddress(host); 067 _sendPacket.setPort(port); 068 _socket_.send(_sendPacket); 069 } 070 071 072 /*** 073 * Same as 074 * <code>send(data, length, host. DiscardUDPClient.DEFAULT_PORT)</code>. 075 ***/ 076 public void send(byte[] data, int length, InetAddress host) 077 throws IOException 078 { 079 send(data, length, host, DEFAULT_PORT); 080 } 081 082 083 /*** 084 * Same as 085 * <code>send(data, data.length, host. DiscardUDPClient.DEFAULT_PORT)</code>. 086 ***/ 087 public void send(byte[] data, InetAddress host) throws IOException 088 { 089 send(data, data.length, host, DEFAULT_PORT); 090 } 091 092 } 093