Merge remote-tracking branch 'origin/master'

This commit is contained in:
tursom 2019-11-03 23:23:13 +08:00
commit a0b1fa6aeb
2 changed files with 50 additions and 8 deletions

View File

@ -0,0 +1,49 @@
package cn.tursom.datagram.broadcast
import cn.tursom.core.toUTF8String
import cn.tursom.datagram.UdpPackageSize.LANNetLen
import java.lang.Thread.sleep
import java.net.DatagramPacket
import java.net.DatagramSocket
import java.net.InetAddress
import java.util.*
import kotlin.concurrent.thread
class BroadcastServer(val port: Int, val bufSize: Int = LANNetLen) {
private val socket = DatagramSocket()
private val server by lazy { DatagramSocket(port) }
private val buffer = DatagramPacket(ByteArray(bufSize), bufSize)
constructor(port: Int) : this(port, LANNetLen)
private fun send(packet: DatagramPacket) {
socket.send(packet)
}
fun send(packet: ByteArray) {
send(packet, 0, packet.size)
}
fun send(packet: ByteArray, offset: Int = 0, size: Int = packet.size) {
send(DatagramPacket(packet, offset, size, broadcastInetAddr, port))
}
fun recv(): ByteArray {
server.receive(buffer)
return Arrays.copyOfRange(buffer.data, 0, buffer.length)
}
fun recvBuffer(): DatagramPacket {
server.receive(buffer)
return buffer
}
companion object {
const val BROADCAST_IP = "255.255.255.255"
@JvmStatic
val broadcastInetAddr = InetAddress.getByName(BROADCAST_IP)
@JvmStatic
fun takeOut(packet: DatagramPacket) = Arrays.copyOfRange(packet.data, 0, packet.length)
}
}

View File

@ -1,5 +1,6 @@
package cn.tursom.datagram.client
import cn.tursom.datagram.UdpPackageSize.defaultLen
import java.io.Closeable
import java.net.DatagramPacket
import java.net.DatagramSocket
@ -39,12 +40,4 @@ class UdpClient(
override fun close() {
socket.close()
}
@Suppress("MemberVisibilityCanBePrivate")
companion object {
//定义不同环境下数据报的最大大小
const val LANNetLen = 1472
const val internetLen = 548
const val defaultLen = internetLen
}
}