Commit 5a8899bd authored by Him188moe's avatar Him188moe

update

parent 87e5f0df
...@@ -122,7 +122,7 @@ public class MiraiServer { ...@@ -122,7 +122,7 @@ public class MiraiServer {
}*/ }*/
} }
public void initSetting(File setting){ private void initSetting(File setting) {
getLogger().info(LoggerTextFormat.SKY_BLUE + "Thanks for using Mirai"); getLogger().info(LoggerTextFormat.SKY_BLUE + "Thanks for using Mirai");
getLogger().info(LoggerTextFormat.SKY_BLUE + "initializing Settings"); getLogger().info(LoggerTextFormat.SKY_BLUE + "initializing Settings");
try { try {
......
package net.mamoe.mirai.network package net.mamoe.mirai.network
import io.netty.bootstrap.Bootstrap import io.netty.bootstrap.Bootstrap
import io.netty.channel.Channel
import io.netty.channel.ChannelHandlerContext import io.netty.channel.ChannelHandlerContext
import io.netty.channel.ChannelInitializer import io.netty.channel.ChannelInitializer
import io.netty.channel.SimpleChannelInboundHandler import io.netty.channel.SimpleChannelInboundHandler
...@@ -9,11 +10,13 @@ import io.netty.channel.socket.SocketChannel ...@@ -9,11 +10,13 @@ import io.netty.channel.socket.SocketChannel
import io.netty.channel.socket.nio.NioSocketChannel import io.netty.channel.socket.nio.NioSocketChannel
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 net.mamoe.mirai.network.packet.Packet
import net.mamoe.mirai.network.packet.client.Client0825ResponsePacket import net.mamoe.mirai.network.packet.client.Client0825ResponsePacket
import net.mamoe.mirai.network.packet.client.ClientPacket
import net.mamoe.mirai.network.packet.client.writeHex
import net.mamoe.mirai.network.packet.server.Server0825Packet import net.mamoe.mirai.network.packet.server.Server0825Packet
import net.mamoe.mirai.network.packet.server.ServerPacket import net.mamoe.mirai.network.packet.server.ServerPacket
import net.mamoe.mirai.utils.MiraiLogger import net.mamoe.mirai.utils.MiraiLogger
import java.net.DatagramPacket
import java.net.InetSocketAddress import java.net.InetSocketAddress
/** /**
...@@ -22,28 +25,36 @@ import java.net.InetSocketAddress ...@@ -22,28 +25,36 @@ import java.net.InetSocketAddress
* @author Him188moe @ Mirai Project * @author Him188moe @ Mirai Project
*/ */
class Robot(val number: Int) { class Robot(val number: Int) {
private lateinit var ctx: ChannelHandlerContext private lateinit var channel: Channel
internal fun onPacketReceived(packet: Packet) {
if (packet !is ServerPacket) {
return
}
@ExperimentalUnsignedTypes
internal fun onPacketReceived(packet: ServerPacket) {
packet.decode() packet.decode()
if (packet is Server0825Packet) {//todo 检查是否需要修改 UDP 连接??? if (packet is Server0825Packet) {
connect(packet.serverIP)
sendPacket(Client0825ResponsePacket(packet.serverIP, number)) sendPacket(Client0825ResponsePacket(packet.serverIP, number))
} }
} }
private fun sendPacket(packet: Packet) { @ExperimentalUnsignedTypes
private fun sendPacket(packet: ClientPacket) {
packet.encode()
packet.writeHex(Protocol.tail);
channel.writeAndFlush(DatagramPacket(packet.toByteArray()))
}
companion object {
private fun DatagramPacket(toByteArray: ByteArray): DatagramPacket = DatagramPacket(toByteArray, toByteArray.size)
} }
@ExperimentalUnsignedTypes
@Throws(InterruptedException::class) @Throws(InterruptedException::class)
fun connect(host: String, port: Int) { fun connect(host: String, port: Int = 8000) {
val group = NioEventLoopGroup() val group = NioEventLoopGroup()
try { try {
val b = Bootstrap() val b = Bootstrap()
b.group(group) b.group(group)
.channel(NioSocketChannel::class.java) .channel(NioSocketChannel::class.java)
.remoteAddress(InetSocketAddress(host, port)) .remoteAddress(InetSocketAddress(host, port))
...@@ -56,7 +67,6 @@ class Robot(val number: Int) { ...@@ -56,7 +67,6 @@ class Robot(val number: Int) {
ch.pipeline().addLast(object : SimpleChannelInboundHandler<ByteArray>() { ch.pipeline().addLast(object : SimpleChannelInboundHandler<ByteArray>() {
override fun channelRead0(ctx: ChannelHandlerContext, bytes: ByteArray) { override fun channelRead0(ctx: ChannelHandlerContext, bytes: ByteArray) {
try { try {
this@Robot.ctx = ctx
/*val remaining = Reader.read(bytes); /*val remaining = Reader.read(bytes);
if (Reader.isPacketAvailable()) { if (Reader.isPacketAvailable()) {
robot.onPacketReceived(Reader.toServerPacket()) robot.onPacketReceived(Reader.toServerPacket())
...@@ -80,9 +90,8 @@ class Robot(val number: Int) { ...@@ -80,9 +90,8 @@ class Robot(val number: Int) {
} }
}) })
val cf = b.connect().sync() channel = b.connect().sync().channel();
channel.closeFuture().sync()
cf.channel().closeFuture().sync()
} finally { } finally {
group.shutdownGracefully().sync() group.shutdownGracefully().sync()
} }
......
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