53 lines
1.3 KiB
Java
53 lines
1.3 KiB
Java
package org.emulinker.net;
|
|
|
|
import java.net.*;
|
|
import java.nio.ByteBuffer;
|
|
|
|
import org.emulinker.util.*;
|
|
|
|
import org.apache.commons.logging.*;
|
|
|
|
public abstract class PrivateUDPServer extends UDPServer
|
|
{
|
|
private static Log log = LogFactory.getLog(PrivateUDPServer.class);
|
|
|
|
private InetAddress remoteAddress;
|
|
private InetSocketAddress remoteSocketAddress;
|
|
|
|
public PrivateUDPServer(boolean shutdownOnExit, InetAddress remoteAddress)
|
|
{
|
|
super(shutdownOnExit);
|
|
this.remoteAddress = remoteAddress;
|
|
}
|
|
|
|
public InetAddress getRemoteInetAddress()
|
|
{
|
|
return remoteAddress;
|
|
}
|
|
|
|
public InetSocketAddress getRemoteSocketAddress()
|
|
{
|
|
return remoteSocketAddress;
|
|
}
|
|
|
|
protected void handleReceived(ByteBuffer buffer, InetSocketAddress inboundSocketAddress)
|
|
{
|
|
if (remoteSocketAddress == null)
|
|
remoteSocketAddress = inboundSocketAddress;
|
|
else if (!inboundSocketAddress.equals(remoteSocketAddress))
|
|
{
|
|
log.warn("Rejecting packet received from wrong address: " + EmuUtil.formatSocketAddress(inboundSocketAddress) + " != " + EmuUtil.formatSocketAddress(remoteSocketAddress));
|
|
return;
|
|
}
|
|
|
|
handleReceived(buffer);
|
|
}
|
|
|
|
protected abstract void handleReceived(ByteBuffer buffer);
|
|
|
|
protected void send(ByteBuffer buffer)
|
|
{
|
|
super.send(buffer, remoteSocketAddress);
|
|
}
|
|
}
|