[英]J2ME app closes socket: Server doesn't get all data
我的J2ME客户端应用程序有问题,该应用程序将数据发送到J2SE服务器,并立即关闭发送套接字。 在J2ME端,我在SocketConnection
上使用普通的OutputStream
,并重复调用带有少量数据包(约30个字节)的write
。 之后,我flush
并最终close
流和连接。
在模拟器中运行客户端时,一切正常。 但是在真正的设备上我遇到了一些问题...
我注意到的是,无论我在客户端上做什么,连接都没有正确关闭。 我总是在服务器上收到一个“ Connection reset
异常,根据TCP的指示,该异常表示连接或发送方中存在错误,这意味着所有后续数据都将被放弃,并且连接将不再使用。 (使用仿真器,服务器上的read
最终返回-1
,表明连接已正确关闭,一点也不例外...)
我尝试使用总数据包大小(1024、2048等)和客户端套接字选项(延迟,延迟,保持活动)。 我还尝试在flush
和close
之间执行Thread.sleep
。在服务器端,发生了不同的事情:
read
方法(延迟和总大小约为2048) 在所有情况下,客户端均已成功发送了整个数据。
确保所有数据都能被另一方接收的最佳方法是什么? 就像我说的那样,J2ME客户端声明所有数据都已成功写入! (总大小无法固定为特定值)
提前致谢!
这看起来像是设备中的错误,您可以从J2SE端发送一条消息以确认接收,并在J2ME端等待收到此消息以关闭套接字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.