Commit f6c489f9 authored by liujiahua123123's avatar liujiahua123123

Server

parent bd7e08b4
...@@ -5,8 +5,11 @@ import net.mamoe.mirai.event.MiraiEventManager; ...@@ -5,8 +5,11 @@ import net.mamoe.mirai.event.MiraiEventManager;
import net.mamoe.mirai.event.events.MiraiEvent; import net.mamoe.mirai.event.events.MiraiEvent;
import net.mamoe.mirai.event.events.server.ServerDisableEvent; import net.mamoe.mirai.event.events.server.ServerDisableEvent;
import net.mamoe.mirai.event.events.server.ServerEnableEvent; import net.mamoe.mirai.event.events.server.ServerEnableEvent;
import net.mamoe.mirai.network.Network;
import net.mamoe.mirai.task.MiraiTaskManager; import net.mamoe.mirai.task.MiraiTaskManager;
import java.io.IOException;
public class MiraiServer { public class MiraiServer {
@Getter @Getter
private static MiraiServer instance; private static MiraiServer instance;
...@@ -16,9 +19,13 @@ public class MiraiServer { ...@@ -16,9 +19,13 @@ public class MiraiServer {
this.onLoad(); this.onLoad();
} }
boolean isEnabled;
protected void shutdown(){ protected void shutdown(){
if(this.isEnabled) {
this.getEventManager().boardcastEvent(new ServerDisableEvent()); this.getEventManager().boardcastEvent(new ServerDisableEvent());
} }
}
@Getter @Getter
...@@ -26,12 +33,21 @@ public class MiraiServer { ...@@ -26,12 +33,21 @@ public class MiraiServer {
@Getter @Getter
MiraiTaskManager taskManager; MiraiTaskManager taskManager;
private void onLoad(){ private void onLoad(){
this.eventManager = MiraiEventManager.getInstance(); this.eventManager = MiraiEventManager.getInstance();
this.taskManager = MiraiTaskManager.getInstance(); this.taskManager = MiraiTaskManager.getInstance();
try {
Network.start(Network.getAvaliablePort());
} catch (InterruptedException | IOException e) {
e.printStackTrace();
this.shutdown();
}
this.eventManager.boardcastEvent(new ServerEnableEvent()); this.eventManager.boardcastEvent(new ServerEnableEvent());
this.isEnabled = true;
} }
......
...@@ -10,6 +10,9 @@ import io.netty.channel.socket.nio.NioServerSocketChannel; ...@@ -10,6 +10,9 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.bytes.ByteArrayDecoder; import io.netty.handler.codec.bytes.ByteArrayDecoder;
import io.netty.handler.codec.bytes.ByteArrayEncoder; import io.netty.handler.codec.bytes.ByteArrayEncoder;
import java.io.IOException;
import java.net.ServerSocket;
/** /**
* JPRE 网络层启动器. * JPRE 网络层启动器.
* 本类用于启动网络服务器. 包接受器请参考 {@link NetworkPacketHandler} * 本类用于启动网络服务器. 包接受器请参考 {@link NetworkPacketHandler}
...@@ -55,4 +58,12 @@ public final class Network { ...@@ -55,4 +58,12 @@ public final class Network {
workerGroup.shutdownGracefully(); 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