Java InputStream read() - Android 问题

标签 java android networking io

好吧,我正在重写这个,因为人们太担心代码了,但这并不重要。

我遇到的问题是,我可以在常规 Java 控制台应用程序中从 TCP 套接字进行读取。

当我尝试在 Android 中执行完全相同的操作时,read() 将不会返回。它只是坐在那里,什么都不做,除非我终止 Android 客户端和服务器之间的连接。

最佳答案

您的协议(protocol)是错误的,并导致死锁。

服务器首先向客户端写入一行。然后它等待客户端的线路。

另一方面,客户端首先从服务器读取数据,直到没有更多内容可读取,并且 read() 方法返回 -1。仅当服务器关闭其到客户端的输出流时才会发生这种情况。因此,客户端等待来自服务器的下一个字符,服务器等待来自客户端的第一行。死锁。

一般来说,客户端和服务器代码应该是对称的。如果您在一侧发送一行,则应该在另一侧读取一行。

关于Java InputStream read() - Android 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15076392/

相关文章:

android - 如何从 PendingIntent 获取 Intent

http - websocket 如何知道服务器已关闭?

http - 与非加密连接相比,TLS 增加了多少网络开销?

java - 如何在 Android Studio 中启用 ProGuard 混淆?

java - 为什么我的 Java Binary Search Tree 类在我告诉它时实际上没有删除节点?

java - ADF 应用程序部署两次以运行

android - 在 android 中带有标签栏的 gridview

java - 在改造中设置字段值

c++ - 为以太网适配器设置自定义 ip 时无法绑定(bind)套接字

java - java中Thread.join()的反向使用