代码拉取完成,页面将自动刷新
同步操作将从 Jenly/ASocket 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package com.king.asocket.app.udp
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import com.king.asocket.ASocket
import com.king.asocket.ISocket
import com.king.asocket.app.R
import com.king.asocket.app.databinding.ActivityUdpMulticastBinding
import com.king.asocket.udp.UDPMulticast
import com.king.asocket.util.LogUtils
import java.lang.Exception
class UDPMulticastActivity : AppCompatActivity() {
val binding by lazy {
ActivityUdpMulticastBinding.inflate(layoutInflater)
}
var mHost = "224.1.1.1"
var mPort = 9002
var aSocket: ASocket? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
title = "UDP Multicast"
binding.etHost.setText(mHost)
binding.etPort.setText(mPort.toString())
}
override fun onDestroy() {
aSocket?.close()
super.onDestroy()
}
private fun getContext() = this
private fun clickStart(){
mHost = binding.etHost.text.toString()
mPort = binding.etPort.text.toString().toInt()
val client = UDPMulticast(mHost,mPort)
aSocket = ASocket(client)
aSocket?.let {
it.setOnSocketStateListener(object : ISocket.OnSocketStateListener{
override fun onStarted() {
binding.btnStart.isEnabled = false
binding.etPort.isEnabled = false
binding.progressBar.isVisible = false
binding.btnStart.text = "已连接"
}
override fun onClosed() {
}
override fun onException(e: Exception) {
if(!it.isConnected){//连接失败
LogUtils.d("连接失败")
Toast.makeText(getContext(),"连接失败", Toast.LENGTH_SHORT).show()
binding.btnStart.isEnabled = true
binding.etPort.isEnabled = true
binding.progressBar.isVisible = false
binding.btnStart.text = "连接"
}
}
})
it.setOnMessageReceivedListener { data ->
binding.tvContent.append("接收:${String(data)}\n")
}
binding.progressBar.isVisible = true
it.start()
}
}
private fun clickSend(){
if(!TextUtils.isEmpty(binding.etContent.text)){
aSocket?.let {
val data = binding.etContent.text.toString()
it.write(data.toByteArray())
if(it.isStart){
binding.tvContent.append("发送:${data}\n")
}
binding.etContent.setText("")
}
}
}
private fun clickClear(){
binding.tvContent.text = ""
}
fun onClick(v: View){
when(v.id){
R.id.btnStart -> clickStart()
R.id.btnSend -> clickSend()
R.id.btnClear -> clickClear()
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。