dhcp4java dhcpserver例程(一)

2014-11-24 02:38:28 · 作者: · 浏览: 0

Java代码
/*
* This file is part of dhcp4java, a DHCP API for the Java language.
* (c) 2006 Stephan Hadinger
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package org.dhcp4java.server;

import static org.dhcp4java.DHCPConstants.BOOTREPLY;
import static org.dhcp4java.DHCPConstants.DHCPACK;
import static org.dhcp4java.DHCPConstants.DHCPOFFER;
import static org.dhcp4java.DHCPConstants.DHO_DHCP_LEASE_TIME;
import static org.dhcp4java.DHCPConstants.DHO_DHCP_SERVER_IDENTIFIER;
import static org.dhcp4java.DHCPConstants.DHO_ROUTERS;
import static org.dhcp4java.DHCPConstants.DHO_SUBNET_MASK;
import static org.dhcp4java.DHCPConstants.HTYPE_ETHER;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.dhcp4java.DHCPCoreServer;
import org.dhcp4java.DHCPOption;
import org.dhcp4java.DHCPPacket;
import org.dhcp4java.DHCPResponseFactory;
import org.dhcp4java.DHCPServerInitException;
import org.dhcp4java.DHCPServlet;

/**
* A sample DHCP servlet (under construction).
*
* @author Stephan Hadinger
* @version 0.60
*/
public class DHCPStaticServlet extends DHCPServlet {

private static final Logger logger = Logger
.getLogger("org.dhcp4java.examplesserver.dhcpstaticserver");

private HashMap macIpMap = new HashMap();
DHCPOption[] commonOptions;

/*
* (non-Javadoc)
*
* @see org.dhcp4java.DHCPServlet#init(java.util.Properties)
*/
@Override
public void init(Properties props) {
// we create a dummy packet to extract "common options"
DHCPPacket temp = new DHCPPacket();
try {
// parse all properties to extract static client definitions
for (Object keyObject : props.keySet()) {
String key = ((String) keyObject);
if (key.startsWith("client.")) {
String addrString = (String) props.get(keyObject);
try {
InetAddress addr = InetAddress.getByName(addrString);
this.macIpMap.put(key.substring("client.".length())
.toLowerCase(), addr);
} catch (UnknownHostException e) {
logger.log(Level.SEVERE, "Could not parse InetAddress "
+ addrString, e);
}
}
}

temp.setOptionAsInetAddress(DHO_DHCP_SERVER_IDENTIFIER,
"192.168.1.1");