This commit is contained in:
liujiahua123123 2019-08-08 23:35:59 +08:00
parent bd7e08b483
commit f6c489f929
2 changed files with 28 additions and 1 deletions

View File

@ -5,8 +5,11 @@ import net.mamoe.mirai.event.MiraiEventManager;
import net.mamoe.mirai.event.events.MiraiEvent;
import net.mamoe.mirai.event.events.server.ServerDisableEvent;
import net.mamoe.mirai.event.events.server.ServerEnableEvent;
import net.mamoe.mirai.network.Network;
import net.mamoe.mirai.task.MiraiTaskManager;
import java.io.IOException;
public class MiraiServer {
@Getter
private static MiraiServer instance;
@ -16,8 +19,12 @@ public class MiraiServer {
this.onLoad();
}
boolean isEnabled;
protected void shutdown(){
this.getEventManager().boardcastEvent(new ServerDisableEvent());
if(this.isEnabled) {
this.getEventManager().boardcastEvent(new ServerDisableEvent());
}
}
@ -26,12 +33,21 @@ public class MiraiServer {
@Getter
MiraiTaskManager taskManager;
private void onLoad(){
this.eventManager = MiraiEventManager.getInstance();
this.taskManager = MiraiTaskManager.getInstance();
try {
Network.start(Network.getAvaliablePort());
} catch (InterruptedException | IOException e) {
e.printStackTrace();
this.shutdown();
}
this.eventManager.boardcastEvent(new ServerEnableEvent());
this.isEnabled = true;
}

View File

@ -10,6 +10,9 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.bytes.ByteArrayDecoder;
import io.netty.handler.codec.bytes.ByteArrayEncoder;
import java.io.IOException;
import java.net.ServerSocket;
/**
* JPRE 网络层启动器.
* 本类用于启动网络服务器. 包接受器请参考 {@link NetworkPacketHandler}
@ -55,4 +58,12 @@ public final class Network {
workerGroup.shutdownGracefully();
}
}
public static int getAvaliablePort() throws IOException {
ServerSocket serverSocket = new ServerSocket(0); //读取空闲的可用端口
int port = serverSocket.getLocalPort();
serverSocket.close();
return port;
}
}