blob: c9e440f1ef7e1ef3915b3974eed3eb1a1c0b4e53 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation. Sun designates this
7 * particular file as subject to the "Classpath" exception as provided
8 * by Sun in the LICENSE file that accompanied this code.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21 * CA 95054 USA or visit www.sun.com if you need additional information or
22 * have any questions.
23 */
24
25/*
26 *
27 * (C) Copyright IBM Corp. 1999 All Rights Reserved.
28 * Copyright 1997 The Open Group Research Institute. All rights reserved.
29 */
30
31package sun.security.krb5.internal;
32
33import java.io.*;
34import java.net.*;
35
36public class UDPClient {
37 InetAddress iaddr;
38 int iport;
39 int bufSize = 65507;
40 DatagramSocket dgSocket;
41 DatagramPacket dgPacketIn;
42
43 public UDPClient(InetAddress newIAddr, int port)
44 throws SocketException {
45 iaddr = newIAddr;
46 iport = port;
47 dgSocket = new DatagramSocket();
48 }
49
50 public UDPClient(String hostname, int port)
51 throws UnknownHostException, SocketException {
52 iaddr = InetAddress.getByName(hostname);
53 iport = port;
54 dgSocket = new DatagramSocket();
55 }
56
57 public UDPClient(String hostname, int port, int timeout)
58 throws UnknownHostException, SocketException {
59 iaddr = InetAddress.getByName(hostname);
60 iport = port;
61 dgSocket = new DatagramSocket();
62 dgSocket.setSoTimeout(timeout);
63 }
64
65 public void setBufSize(int newBufSize) {
66 bufSize = newBufSize;
67 }
68
69 public InetAddress getInetAddress() {
70 if (dgPacketIn != null)
71 return dgPacketIn.getAddress();
72 return null;
73 }
74
75 public void send(byte[] data) throws IOException {
76 DatagramPacket dgPacketOut = new DatagramPacket(data, data.length,
77 iaddr, iport);
78 dgSocket.send(dgPacketOut);
79 }
80
81 public byte[] receive() throws IOException {
82 byte ibuf[] = new byte[bufSize];
83 dgPacketIn = new DatagramPacket(ibuf, ibuf.length);
84 try {
85 dgSocket.receive(dgPacketIn);
86 }
87 catch (SocketException e) {
88 dgSocket.receive(dgPacketIn);
89 }
90 byte[] data = new byte[dgPacketIn.getLength()];
91 System.arraycopy(dgPacketIn.getData(), 0, data, 0,
92 dgPacketIn.getLength());
93 return data;
94 }
95
96}