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

时间:2014-01-14 22:31:36

标签: java android multithreading sockets

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

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

非常感谢!

1 个答案:

答案 0 :(得分:3)

  

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

没有。它将数据写入OutputStream.

  

有些时候(比如50%),我调用套接字连接的OutputStream.write()方法,服务器日志显示客户端关闭连接。

不,不。这就是它真正展示的内容:

  

当我执行OutputStram.Write()时,服务器在屏幕上显示:“连接到客户端关闭”。

这表示服务器关闭了连接 客户端。不是相反。

可能你发送了一些无效的东西,服务器被禁止了。