当前位置: 首页 > news >正文

甘肃网站域名申请公司站长资讯

甘肃网站域名申请公司,站长资讯,百度网站开发业务,免费建造网站文章目录 其他文章监听端口接收消息 建立新线程完整代码 其他文章 下面是我的另一篇文章,是在电脑上发送数据,配合本篇文章,可以实现电脑与手机的局域网通讯。直接复制粘贴就能行,非常滴好用。 点击连接 另外,如果你不…

文章目录

  • 其他文章
  • 监听端口
    • 接收消息
  • 建立新线程
  • 完整代码

其他文章

下面是我的另一篇文章,是在电脑上发送数据,配合本篇文章,可以实现电脑与手机的局域网通讯。直接复制粘贴就能行,非常滴好用。
点击连接
另外,如果你不知道你的手机ip,也可以通过如下文章获取哦,这文章的是局域网IP,限于局域网测试。
点击连接

监听端口

我们可以创建一个DatagramSocket对象,用于在指定的端口上接收UDP消息。

DatagramSocket是Java中用于进行UDP通信的类,它代表一个数据报套接字。通过DatagramSocket对象,我们可以发送和接收UDP数据报。

示例代码如下:

val udpSocket = DatagramSocket(port)

port变量是指定的端口号,用于指定UDP套接字绑定的端口。创建的udpSocket对象将在目标端口号上进行监听,用于接收来自其他节点的UDP消息。

接收消息

一旦创建了DatagramSocket对象,就可以使用该对象的receive方法来接收UDP消息,并将接收到的数据存储在一个DatagramPacket对象中,然后通过解析DatagramPacket对象来获取实际的消息内容。
示例代码如下:

val buffer = ByteArray(1024)
val packet = DatagramPacket(buffer, buffer.size)
udpSocket.receive(packet)

接收到消息后,就可以进行相应的处理操作,比如更新UI等。

建立新线程

在Android开发中,主线程(也称为UI线程)负责处理用户界面的更新和响应用户交互事件,包括处理用户输入、渲染界面等操作。如果在主线程中执行耗时的操作,如网络请求、文件读写等,会导致界面卡顿、无响应或ANR错误。

为避免这种情况,在执行网络数据的接收操作时,需要使用Thread来创建一个新的线程。将耗时的操作放在新的线程中执行,保持主线程的响应性。这样,主线程仍然可以继续处理用户界面的更新和事件,而不会因为阻塞在接收消息操作上而产生卡顿或无响应的情况。

开启新线程,首先创建一个Thread对象,并传入一个Runnable对象作为参数。Runnable对象定义了线程要执行的操作。
示例代码如下:

val receiveThread = Thread(Runnable {
})

在线程中,我们可以通过Thread.currentThread()方法获得当前执行的线程对象。
而通过线程对象的isInterrupted()方法可以检查当前线程是否被中断。如果线程被中断,isInterrupted()方法会返回true,否则返回false。
如此一来,我们可以在线程中通过一个循环,来不断的接收数据。
示例代码如下:

while (!Thread.currentThread().isInterrupted) {
}

循环条件表示当当前线程不被中断时执行循环体内的代码。这样程序就在后台线程中执行持续性的任务,直到线程被中断或任务完成才退出循环。

当然了,要在循环体内部结束循环的话,只要执行Thread.currentThread().interrupt()方法即可,该方法会中断当前线程。然后isInterrupted()方法将会返回true,循环条件将不再满足,从而退出循环。这可以用来停止线程的执行并终止循环。

最后我们得到如下代码:

val receiveThread = Thread(Runnable {val udpSocket = DatagramSocket(port)val buffer = ByteArray(1024)val packet = DatagramPacket(buffer, buffer.size)while (!Thread.currentThread().isInterrupted) {try {udpSocket.receive(packet)val receivedData: String = String(packet.data, 0, packet.length)runOnUiThread {updateReceivedMessage(receivedData)}} catch (e: Exception) {e.printStackTrace()}}udpSocket.disconnect()udpSocket.close()
})

在Runnable对象的run方法中,我们创建了一个DatagramSocket对象,并指定了要监听的端口号。然后我们创建了一个字节数组buffer以及一个DatagramPacket对象packet,用于接收UDP数据。
在循环中,我们使用udpSocket.receive(packet)方法来接收数据。一旦有数据到达,receive方法会阻塞,直到数据到达或者发生异常。当数据到达后,使用packet对象从接收到的数据中提取字符串,并调用runOnUiThread方法来在UI线程中更新界面上的receivedMessageTextView的文本内容,显示接收到的消息。

在循环结束后,记得关闭udpSocket连接。

完整代码

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.TextView
import java.net.DatagramPacket
import java.net.DatagramSocketclass MainActivity : AppCompatActivity() {private val port = 8888private lateinit var receivedMessageTextView: TextViewoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)receivedMessageTextView = findViewById(R.id.tv_received_message)val receiveThread = Thread(Runnable {val udpSocket = DatagramSocket(port)val buffer = ByteArray(1024)val packet = DatagramPacket(buffer, buffer.size)while (!Thread.currentThread().isInterrupted) {try {udpSocket.receive(packet)val receivedData: String = String(packet.data, 0, packet.length)runOnUiThread {updateReceivedMessage(receivedData)}} catch (e: Exception) {e.printStackTrace()}}udpSocket.disconnect()udpSocket.close()})receiveThread.start()}private fun updateReceivedMessage(message: String) {receivedMessageTextView.text = message}
}
http://www.hkea.cn/news/823019/

相关文章:

  • 团购的网站扣佣金分录怎么做厦门百度竞价
  • 国家疫情最新政策麒麟seo外推软件
  • 河南第二波疫情最新消息淘宝关键词优化技巧教程
  • 优化好的网站做企业网站百度代理公司
  • 外贸b2c网站如何做推广百度电话人工服务
  • 百度怎样做网站并宣传网站2023上海又出现疫情了
  • wordpress后台登录慢阳山网站seo
  • 深圳网站建设企网络推广运营途径
  • 给自己女朋友做的网站yandex搜索引擎
  • 购物网站建设教程怎么在网上做广告宣传
  • 冠县做网站推广网站怎么制作
  • 开封 网站建设苹果被曝开发搜索引擎对标谷歌
  • 东莞虎门高铁站百度客户端电脑版下载
  • 建网站怎么挣钱的学seo推广
  • 自如网站做的好 服务哪个网站学seo是免费的
  • 国外网站阻止国内访问怎么做竞价推广工具
  • 建设一个网站需要哪些方面的开支百度人工客服
  • 品牌网站建设-建站之路最新疫情新闻100字
  • 东莞网站优化科技有限公司怀柔网站整站优化公司
  • 郑州网站建设联系方式外链是什么意思
  • 用wordpress做网站教程电脑优化大师有用吗
  • 佛山企业网站制作今日热点新闻事件
  • 企业网站网络推广黑帽seo培训
  • 欧美做的爱爱网站有哪些广告推广赚钱
  • 泉州网站建设工作室谷歌seo价格
  • 国建设委员会网站百度推广一天烧几千
  • 做网站 花园路国贸营销推广方案包括哪些内容
  • 做商城网站哪里买口碑营销属于什么营销
  • 鞋子 东莞网站建设真正的免费建站在这里
  • 网站上微信的链接怎么做项目平台