View Javadoc
1 /************************************************************ 2 * Copyright * 3 * Portions of this software are Copyright (c) 1993 - 2002, * 4 * Chad Z. Hower (Kudzu) and the Indy Pit Crew * 5 * - http://www.nevrona.com/Indy/ * 6 ************************************************************/ 7 package org.indy.udp; 8 9 import java.io.IOException; 10 11 import java.net.DatagramPacket; 12 import java.net.DatagramSocket; 13 import java.net.InetAddress; 14 import java.net.SocketException; 15 import java.net.UnknownHostException; 16 17 import org.indy.IndyComponent; 18 19 import org.indy.io.IndyIOException; 20 import org.indy.io.IndyUnknownHostException; 21 22 import org.indy.util.IndyUtilities; 23 24 25 /*** 26 * NB, Broadcast is ALWAYS enabled in Java UDP sockets, 27 * so there's no point including the property that appears in 28 * the Delphi version. 29 */ 30 public abstract class IdUDPBase extends IndyComponent { 31 /*** DOCUMENT ME! */ 32 public static final int UDP_BUFFERSIZE = 8192; 33 private boolean active = false; 34 private DatagramSocket binding; 35 private int receiveTimeout = 0; 36 private InetAddress host; 37 private int port; 38 39 /*** 40 * Creates a new IdUDPBase object. 41 */ 42 public IdUDPBase() { 43 super(); 44 45 //binding.setReceiveBufferSize(UDP_BUFFERSIZE); 46 } 47 48 /*** 49 * DOCUMENT ME! 50 * 51 * @return DOCUMENT ME! 52 */ 53 public boolean getActive() { 54 return active; 55 } 56 57 /*** 58 * DOCUMENT ME! 59 * 60 * @param value DOCUMENT ME! 61 * 62 * @throws IndyIOException DOCUMENT ME! 63 */ 64 public void setActive(boolean value) throws IndyIOException { 65 try { 66 if (value != active) { 67 if (value) { 68 binding = new DatagramSocket(); 69 } 70 else { 71 binding.close(); 72 binding = null; 73 } 74 } 75 76 active = value; 77 } 78 catch (SocketException se) { 79 throw new IndyIOException(se); 80 } 81 } 82 83 /*** 84 * DOCUMENT ME! 85 * 86 * @param b DOCUMENT ME! 87 * @param off DOCUMENT ME! 88 * @param len DOCUMENT ME! 89 * @param peer DOCUMENT ME! 90 * @param peerPort DOCUMENT ME! 91 * @param timeout DOCUMENT ME! 92 * 93 * @return DOCUMENT ME! 94 * 95 * @throws IndyIOException DOCUMENT ME! 96 */ 97 protected final int receiveBuffer(byte[] b, int off, int len, 98 InetAddress peer, int peerPort, int timeout) 99 throws IndyIOException { 100 if (active) { 101 if (timeout == IndyUtilities.getDefaultTimeout()) { 102 timeout = receiveTimeout; 103 } 104 105 DatagramPacket dp = new DatagramPacket(b, off, len, peer, peerPort); 106 107 try { 108 binding.setSoTimeout(timeout); 109 binding.receive(dp); 110 111 return dp.getLength(); 112 } 113 catch (IOException ioe) { 114 throw new IndyIOException(ioe); 115 } 116 } 117 else { 118 return 0; 119 } 120 } 121 122 /*** 123 * DOCUMENT ME! 124 * 125 * @param b DOCUMENT ME! 126 * @param off DOCUMENT ME! 127 * @param len DOCUMENT ME! 128 * @param peerIP DOCUMENT ME! 129 * @param peerPort DOCUMENT ME! 130 * @param timeout DOCUMENT ME! 131 * 132 * @return DOCUMENT ME! 133 * 134 * @throws IndyIOException DOCUMENT ME! 135 * @throws IndyUnknownHostException DOCUMENT ME! 136 */ 137 public int receiveBuffer(byte[] b, int off, int len, String peerIP, 138 int peerPort, int timeout) throws IndyIOException, 139 IndyUnknownHostException { 140 try { 141 InetAddress ia = InetAddress.getByName(peerIP); 142 143 return receiveBuffer(b, off, len, ia, peerPort, timeout); 144 } 145 catch (UnknownHostException uhe) { 146 throw new IndyUnknownHostException(uhe); 147 } 148 } 149 150 /*** 151 * DOCUMENT ME! 152 * 153 * @param b DOCUMENT ME! 154 * @param peerIP DOCUMENT ME! 155 * @param peerPort DOCUMENT ME! 156 * @param timeout DOCUMENT ME! 157 * 158 * @return DOCUMENT ME! 159 * 160 * @throws IndyIOException DOCUMENT ME! 161 * @throws IndyUnknownHostException DOCUMENT ME! 162 */ 163 public int receiveBuffer(byte[] b, String peerIP, int peerPort, int timeout) 164 throws IndyIOException, IndyUnknownHostException { 165 return receiveBuffer(b, 0, 0, peerIP, peerPort); 166 } 167 168 /*** 169 * DOCUMENT ME! 170 * 171 * @param b DOCUMENT ME! 172 * @param off DOCUMENT ME! 173 * @param len DOCUMENT ME! 174 * @param peerIP DOCUMENT ME! 175 * @param peerPort DOCUMENT ME! 176 * 177 * @return DOCUMENT ME! 178 * 179 * @throws IndyIOException DOCUMENT ME! 180 * @throws IndyUnknownHostException DOCUMENT ME! 181 */ 182 public int receiveBuffer(byte[] b, int off, int len, String peerIP, 183 int peerPort) throws IndyIOException, 184 IndyUnknownHostException { 185 return receiveBuffer(b, off, len, peerIP, peerPort, 186 IndyUtilities.getDefaultTimeout()); 187 } 188 189 /*** 190 * DOCUMENT ME! 191 * 192 * @param b DOCUMENT ME! 193 * @param peerIP DOCUMENT ME! 194 * @param peerPort DOCUMENT ME! 195 * 196 * @return DOCUMENT ME! 197 * 198 * @throws IndyIOException DOCUMENT ME! 199 * @throws IndyUnknownHostException DOCUMENT ME! 200 */ 201 public int receiveBuffer(byte[] b, String peerIP, int peerPort) 202 throws IndyIOException, IndyUnknownHostException { 203 return receiveBuffer(b, 0, 0, peerIP, peerPort); 204 } 205 206 /*** 207 * DOCUMENT ME! 208 * 209 * @param b DOCUMENT ME! 210 * @param off DOCUMENT ME! 211 * @param len DOCUMENT ME! 212 * @param timeout DOCUMENT ME! 213 * 214 * @return DOCUMENT ME! 215 * 216 * @throws IndyIOException DOCUMENT ME! 217 * @throws IllegalStateException DOCUMENT ME! 218 */ 219 public int receiveBuffer(byte[] b, int off, int len, int timeout) 220 throws IndyIOException { 221 if ((host == null) || (port == 0)) { 222 throw new IllegalStateException( 223 "Host and Port must be set before calling this method"); 224 } 225 226 return receiveBuffer(b, off, len, host, port, timeout); 227 } 228 229 /*** 230 * DOCUMENT ME! 231 * 232 * @param b DOCUMENT ME! 233 * @param timeout DOCUMENT ME! 234 * 235 * @return DOCUMENT ME! 236 * 237 * @throws IndyIOException DOCUMENT ME! 238 */ 239 public int receiveBuffer(byte[] b, int timeout) throws IndyIOException { 240 return receiveBuffer(b, 0, 0, timeout); 241 } 242 243 /*** 244 * DOCUMENT ME! 245 * 246 * @param b DOCUMENT ME! 247 * @param off DOCUMENT ME! 248 * @param len DOCUMENT ME! 249 * 250 * @return DOCUMENT ME! 251 * 252 * @throws IndyIOException DOCUMENT ME! 253 * @throws IllegalStateException DOCUMENT ME! 254 */ 255 public int receiveBuffer(byte[] b, int off, int len) 256 throws IndyIOException { 257 if ((host == null) || (port == 0)) { 258 throw new IllegalStateException( 259 "Host and Port must be set before calling this method"); 260 } 261 262 return receiveBuffer(b, off, len, host, port, 263 IndyUtilities.getDefaultTimeout()); 264 } 265 266 /*** 267 * DOCUMENT ME! 268 * 269 * @param b DOCUMENT ME! 270 * 271 * @return DOCUMENT ME! 272 * 273 * @throws IndyIOException DOCUMENT ME! 274 */ 275 public int receiveBuffer(byte[] b) throws IndyIOException { 276 return receiveBuffer(b, 0, 0, IndyUtilities.getDefaultTimeout()); 277 } 278 279 /*** 280 * DOCUMENT ME! 281 * 282 * @param receiveTimeout DOCUMENT ME! 283 */ 284 public void setReceiveTimeout(int receiveTimeout) { 285 this.receiveTimeout = receiveTimeout; 286 } 287 288 /*** 289 * DOCUMENT ME! 290 * 291 * @return DOCUMENT ME! 292 */ 293 public int getReceiveTimeout() { 294 return receiveTimeout; 295 } 296 297 /*** 298 * DOCUMENT ME! 299 * 300 * @return DOCUMENT ME! 301 */ 302 public String getHost() { 303 return host.getHostAddress(); 304 } 305 306 /*** 307 * DOCUMENT ME! 308 * 309 * @param newHost DOCUMENT ME! 310 * 311 * @throws IndyUnknownHostException DOCUMENT ME! 312 */ 313 public void setHost(String newHost) throws IndyUnknownHostException { 314 try { 315 host = InetAddress.getByName(newHost); 316 } 317 catch (UnknownHostException uhe) { 318 throw new IndyUnknownHostException(uhe); 319 } 320 } 321 322 /*** 323 * DOCUMENT ME! 324 * 325 * @return DOCUMENT ME! 326 */ 327 public int getPort() { 328 return port; 329 } 330 331 /*** 332 * DOCUMENT ME! 333 * 334 * @param port DOCUMENT ME! 335 */ 336 public void setPort(int port) { 337 this.port = port; 338 } 339 }

This page was automatically generated by Maven