Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin-socket.write或getOutputStream,flush关闭连接_Android_Sockets_Kotlin - Fatal编程技术网

Android Kotlin-socket.write或getOutputStream,flush关闭连接

Android Kotlin-socket.write或getOutputStream,flush关闭连接,android,sockets,kotlin,Android,Sockets,Kotlin,又是一天,又是一个扫兴的日子。 我一直试图通过TCP套接字发送ByteArray并获得响应,但每当我以任何形式写入套接字时,它都不会等待响应 我设置了一个包发送器应用程序,它在端口上等待连接,当来自android设备的连接发生时,它应该返回一些字符串 到目前为止,我有两段代码…第一段发送但不接收,第二段不发送任何数据但触发响应。。。我很困惑 有人能帮我解决这个问题吗 好的。。我看到两个片段很混乱,所以这里是我现在关注的一个 Thread(Runnable {

又是一天,又是一个扫兴的日子。 我一直试图通过TCP套接字发送ByteArray并获得响应,但每当我以任何形式写入套接字时,它都不会等待响应

我设置了一个包发送器应用程序,它在端口上等待连接,当来自android设备的连接发生时,它应该返回一些字符串

到目前为止,我有两段代码…第一段发送但不接收,第二段不发送任何数据但触发响应。。。我很困惑

有人能帮我解决这个问题吗

好的。。我看到两个片段很混乱,所以这里是我现在关注的一个

            Thread(Runnable {
                try {
                    d("TEST > Connect 2> IP:", IP.toString())
                    d("TEST > Connect 2> Port:", Port.toString())
                    d("TEST >> FINAL OUT 2>> ", hex)

                    val client = Socket(IP.toString(), Port)
                    //client.outputStream.write(hexOut(hex!!))

                    var pw = PrintWriter(client.getOutputStream());
                    pw.println("HERE")
                    //pw.flush()

                    var inData = BufferedReader(InputStreamReader(client.getInputStream()))
                    d("TEST >> ", inData.toString())

                    //client.close()
                } catch (ex: Exception) {
                    d("TEST > ERROR 2>>> ", ex.toString())
                    Snackbar.make(mainView, "$ex", Snackbar.LENGTH_INDEFINITE ).show()
                } finally {
                    d("TEST >> Sent done 2>"," for $hex")
                }
            }).start()
结果是,除了打开的连接外,什么也不做,也不向服务器发送任何内容,但有返回数据。(来到这里)

从IP从端口到IP到端口的时间方法ASCII十六进制

04:49:24.500您(回复)444192.168.1.44642 TCP到达这里47 4F 54 20 48 45

04:49:19.500 192.168.1.4 4642您444 TCP

如果我取消对flush()的注释,则只发送消息(此处),但没有响应。如果printwriter被推荐出去,而write没有注释,则情况也是如此

从IP从端口到IP到端口的时间方法ASCII十六进制

04:53:09.107 192.168.1.4 4680您在这里使用444 TCP\n 48 45 52 45 0A

目标是发送数据(此处)并获得响应(此处)。我尝试了我能想到的每一个谷歌搜索词,尝试了TCP类,尝试了一系列的例子,都归结到这一点。我被困在这个问题上的时间超过了我愿意承认的时间,我没有在谷歌搜索和测试之前问过这个问题。
我希望这是件简单的事情,以后我会踢自己

很抱歉浪费了你的时间。。。。。。应该归咎于我的测试设置。。。。浪费了这么多时间。。。。好。。当然可以睡觉了,谢谢你的努力

你的代码没有意义。你的发送代码没有读取任何内容
inData.toString()
不是I/O操作。尝试
readLine()
,因为您正在从第二个块发送一行。这里没有异常关闭的证据。这两个代码段应该做相同的事情,连接到服务器,发送一些数据并从服务器获取。服务器不是基于android的,用于使用Pocket Sender测试Im。你是对的,代码什么都不读,但这不是我的问题。第一个服务器正确地向服务器发送数据,但没有返回任何数据,而第二个服务器只是打开一个连接,在触发服务器返回数据时不发送任何数据。服务器上没有应发送数据的条件。它在接收到anyIm时发送,监视PocketSender发送的内容。我可以看到应用程序何时连接、发送数据以及发送回什么数据。第一个代码段发送数据,但连接被关闭,第二个代码段不发送数据(应该),但连接保持打开,以便将数据发送回android应用程序。试过写,试过使用printwriter,试过。。。我不知道还有什么好尝试的,因为“连接被关闭”。给我们看看日志。回答我关于等待答复的问题。给我们点东西。这两段代码之间的唯一区别是
write()
println()
之间的区别,您没有任何理解的迹象。当你在做这件事时,请解释一下当你的代码中没有刷新时,你标题中关于
flush()
的声明。