⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractethernetdriver.java

📁 纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统
💻 JAVA
字号:
/*
 * $Id: AbstractEthernetDriver.java,v 1.1 2003/11/25 11:52:21 epr Exp $
 */
package org.jnode.driver.net.ethernet;

import org.jnode.driver.net.AbstractNetDriver;
import org.jnode.driver.net.NetworkException;
import org.jnode.net.HardwareAddress;
import org.jnode.net.SocketBuffer;
import org.jnode.net.ethernet.EthernetAddress;
import org.jnode.net.ethernet.EthernetConstants;
import org.jnode.net.ethernet.EthernetHeader;
import org.jnode.net.ethernet.EthernetUtils;

/**
 * @author epr
 */
public abstract class AbstractEthernetDriver extends AbstractNetDriver implements EthernetConstants {

	/**
	 * Gets the maximum transfer unit, the number of bytes this device can
	 * transmit at a time.
	 */
	public int getMTU() {
		return ETH_DATA_LEN;
	}

	/**
	 * @see org.jnode.driver.net.AbstractNetDriver#getDevicePrefix()
	 */
	protected final String getDevicePrefix() {
		return ETH_DEVICE_PREFIX;
	}

	/**
	 * @see org.jnode.driver.net.AbstractNetDriver#onReceive(org.jnode.net.SocketBuffer)
	 */
	public void onReceive(SocketBuffer skbuf) throws NetworkException {
		// Extract ethernet header
		final EthernetHeader hdr = new EthernetHeader(skbuf); 
		skbuf.setLinkLayerHeader(hdr);
		skbuf.setProtocolID(EthernetUtils.getProtocol(hdr));
		skbuf.pull(hdr.getLength());
		// Send to PM
		super.onReceive(skbuf);
	}
	
	/**
	 * @see org.jnode.driver.net.AbstractNetDriver#doTransmit(org.jnode.net.SocketBuffer, org.jnode.net.HardwareAddress)
	 */
	protected final void doTransmit(SocketBuffer skbuf, HardwareAddress destination)
	throws NetworkException {
		skbuf.insert(ETH_HLEN);
		if (destination != null) {
			destination.writeTo(skbuf, 0);
		} else {
			EthernetAddress.BROADCAST.writeTo(skbuf, 0);
		}
		getAddress().writeTo(skbuf, 6);
		skbuf.set16(12, skbuf.getProtocolID());
		doTransmitEthernet(skbuf);
	}

	/**
	 * @see org.jnode.driver.net.AbstractNetDriver#doTransmit(org.jnode.net.SocketBuffer, org.jnode.net.HardwareAddress)
	 */
	protected abstract void doTransmitEthernet(SocketBuffer skbuf)
	throws NetworkException;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -