Commit f6c489f9 authored by liujiahua123123's avatar liujiahua123123

Server

parent bd7e08b4
......@@ -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,9 +19,13 @@ public class MiraiServer {
this.onLoad();
}
boolean isEnabled;
protected void shutdown(){
if(this.isEnabled) {
this.getEventManager().boardcastEvent(new ServerDisableEvent());
}
}
@Getter
......@@ -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;
}
......
......@@ -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;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment