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