java - 为什么 OutputStream.write() 关闭套接字连接?

标签 java android multithreading sockets

<分区>

我正在开发通过套接字与服务器通信的 android 应用程序。我有一个线程读取套接字,而主线程执行一个 Asynk Task 通过同一个套接字发送消息。这里的问题是,有些时候(比如说 50% 的时间)我调用了套接字连接的 OutputStream.write() 方法,服务器日志显示客户端关闭了连接。我读到 java 套接字是全双工的,这应该允许我通过同一个套接字毫无问题地发送和接收消息。那么,为什么会这样呢?问题出在应用程序上吗?还是关闭连接的服务器端代码(我无权访问)??

编辑:服务器是带有 raspbian 发行版的树莓派,仅运行一个 java 应用程序,该应用程序与我的应用程序通信。我无法访问服务器上运行的 Java 代码,也无法访问服务器显示的任何日志,我只能访问连接到服务器的屏幕,该屏幕打印代码“告诉”它打印的消息。当我执行 OutputStram.Write() 时,服务器在屏幕上显示:“与客户端的连接已关闭”。

非常感谢!

最佳答案

Why does OutputStream.write() closes socket connection?

事实并非如此。它将数据写入 OutputStream。

some times (lets say 50% of times) that I call the OutputStream.write() method of the socket connection, the servers log shows that the client closed connection.

不,它没有。这是它真正显示的内容:

When I execute the OutputStram.Write(), the server shows on screen: "Connection to client closed".

这表示服务器关闭了客户端的连接。反之则不然。

可能是您发送了无效的内容,服务器被拒绝了。

关于java - 为什么 OutputStream.write() 关闭套接字连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21125417/

相关文章:

java - 如何使用 eclipse 将图像文件导出到可运行的 JAR

java - 如何检查是否有3NF?

java - 如何使用 Mockito 在 Java 中模拟链式依赖

java - 重新排列可变字段周围的正常字段

c++ - 如何检查分离的 std::thread 是否仍在运行?

java - 从依赖项中删除未使用的方法/类

android - 有没有办法在没有任何额外操作的情况下从 'adb shell am' 调用 DataUsageSummary?

android - 尝试从 ListView 获取字符串

java - R.string Resources $ NotFoundException在Android应用程序上的错误

java线程挂起导致其他线程挂起(续)