【问题标题】:How can i read text from socket Kotlin/Android?如何从套接字 Kotlin/Android 读取文本?
【发布时间】:2022-01-06 23:05:33
【问题描述】:

我马上就说最近开始学习Kotlin,只想重写一个程序,所以就接了这个

我想读取从传入流中接收到的文本,但结果我得到以下内容

也许我犯了非常愚蠢的错误,但我几乎不明白它在这里是什么以及如何运作 (我看了一半上网)

I don't know what is this

附: I already tried to use this, but the program just doesn't go further and that's it

package com.example.appisone
import java.net.Socket
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import kotlinx.coroutines.*
import java.io.InputStreamReader
import java.util.*


class MainActivity : AppCompatActivity() {

    private var Text_Edit: EditText? = null
    private var btn: Button? = null
    private var Text_view: TextView? = null


    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        Text_Edit = findViewById(R.id.EditText)
        btn = findViewById(R.id.Button)
        Text_view = findViewById(R.id.TextView)
        btn?.setOnClickListener {
            Text_view?.text = Text_Edit?.text
            println("Button is pressed!")
            GlobalScope.launch(Dispatchers.IO) {
                send_text()

            }
        }


    }

    private fun send_text() {
        var data: Any
        println("send_text is pressed!")
        val client = Socket("192.168.0.3", 9090)
        val text = Text_Edit?.text.toString()
        println(text.toByteArray())
        client.getOutputStream().write(text.toByteArray())

        val reader = client.getInputStream()



        data = reader.toString()
        println("Сообщение --- >$data")



    }


}  ```


Thanks in advance for your wasted time

【问题讨论】:

标签: java android kotlin socket.io


【解决方案1】:

你不会像这样阅读Reader

reader.toString()

这只是将Reader >>objecttoString 没有被Reader 覆盖,您将获得Object::toString 实现。 (它以十六进制打印内部类名和对象的“身份哈希码”。)

要从Reader 读取,请使用Reader API 中的read 方法之一,或将其包装在ScannerBufferedReader 中,以便您可以使用这些API。


在您的“附言”中您还在不覆盖 toString() 的对象上调用 toString()。根据类名,它看起来像是一个字节[]。

【讨论】:

  • 我使用了这个data = reader.read(x) 方法,但现在我得到的只是0。我阅读了文档但无法真正弄清楚
猜你喜欢
  • 1970-01-01
  • 2012-03-08
  • 2012-07-24
  • 2022-06-16
  • 2017-01-18
  • 2011-10-29
  • 2013-02-13
  • 1970-01-01
相关资源
最近更新 更多