我正在开发一个应用程序,该应用程序将接受来自Java应用程序的TCP套接字连接。 (是的,该部分需要Java。这是Sun SPOT设备,而Java是唯一的选择。)Java应用程序将定期向套接字写入新数据,并且我的应用程序的工作是接收byte [],将其转换为字符串,处理数据(更新UI等),并可能将数据转发到运行类似C#.NET应用程序的另一台计算机上。
到目前为止,我已经完成了以下工作:现在,该应用程序在启动时会启动一个线程以打开套接字。 Java应用程序可以成功连接到套接字,因此它正在工作。我正在研究NetworkStream的beginRead方法以及dataAvailable,length和CanRead属性,但我不完全确定如何确定何时读取了一个数据包,通常约512字节但可能会有所不同。
如果Java应用程序向流写入数据或存在数据积压(Java应用程序将快速传递数据),如何确保我一次只读取一个数据包?如果Java应用程序在写入数据时将其空终止,这是否有帮助?足够吗?
最后,套接字只会接收一个连接,但我需要保持它开放,直到出现错误或连接终止。处理此方面的最优雅方式是什么?我认为每个数据包都关闭并重新打开不起作用,因为运行在Sun SPOT基站上的Java应用程序几乎是实时的。现在,当基站终止时,我的应用程序会死亡。
感谢您的阅读和提供的任何帮助。