2014-01-14 35 views
1

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

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

非常感谢!

+1

你有什么异常?它应该在你的Android日志中。 – Gray

+0

我怀疑服务器已关闭连接。 – Gray

+0

“服务器日志显示客户端已关闭连接”:不,它不。 *显示*我们日志真正包含的内容。 – EJP

回答

3

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

它没有。它把数据写入一个OutputStream.

某些时候(可以说的时候50%),我称之为套接字连接的OutputStream.write()方法,服务器日志显示客户端关闭连接。

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

当我执行OutputStram.Write()时,服务器在屏幕上显示:“Connection to client closed”。

此说,服务器关闭了连接客户端。不是相反。

也许你发送了一些无效的和服务器barfed。

+0

我实际发送的是服务器操作并保存在数据库上的字符串。让我再次检查服务器管理员。 – CarlosT

相关问题