请原谅我的 C#.Net 新手状态。如果这很明显并且我从文档中错过了它,将不胜感激提供相关页面或示例代码的链接。
我正在开发一个将接受来自 Java 应用程序的 TCP 套接字连接的应用程序。(是的,那部分需要 Java。它是 Sun SPOT 设备,Java 是唯一的选择。)Java 应用程序将定期将新数据写入套接字,我的应用程序的工作是接收字节 [],转换将其转换为字符串,处理数据(更新 UI 等),并可能将数据转发到另一台运行类似 C#.NET 应用程序的计算机上。
以下是我到目前为止所做的: 现在,应用程序在启动时启动了一个线程,该线程打开了一个套接字。Java 应用程序可以成功连接到套接字,以便正常工作。我正在查看 NetworkStream 的beginRead
方法和dataAvailable
, length
, 和CanRead
属性,但我不完全确定如何确定何时读取了一个数据包,通常约为 512 个字节,但可能会有所不同。
如果 Java 应用程序将数据写入流或有数据积压(Java 应用程序将很快传递数据。)如何确保一次只读取一个数据包?如果 Java 应用程序 null 在写入时终止数据,那会有帮助吗?够了吗?
最后,套接字只会接收一个连接,但我需要让它保持打开状态,直到出现错误或连接终止。处理这方面的最优雅的方式是什么?由于在 Sun SPOT 基站上运行的 Java 应用程序的快速启动(近乎实时)方面,我认为关闭并重新打开每个数据包都不会起作用。现在,当基站终止时,我的应用程序会大声而痛苦地死去。:)
感谢您的阅读以及您可以提供的任何帮助。