EmuLinkerSF/src/org/emulinker/net/PrivateUDPServer.java
2019-08-21 20:06:04 +03:00

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);
}
}