我想通过 TCP 套接字将 xml
文件从 C# 应用程序发送到 Java Android 应用程序。
该 xml 文件的长度可能会有很大差异,因此我认为我需要在消息开头添加一些内容来标识该 xml 文件的长度。 Socket.SendFile(..) 有一个参数,我已经开始编码:
long fileLength = xmlFile.BaseStream.Length;
byte[] prepend = BitConverter.GetBytes(fileLength);
xmlFile.Close();
client.SendFile("test.xml", prepend, null, TransmitFileOptions.UseDefaultWorkerThread);
我的问题是,理论上这个应用程序应该在几个不同的操作系统和不同的电脑上运行。尽管在大多数情况下事情应该是相同的,但我担心如何处理 long
不是 64 位的情况,我相信这是可能的?
在我的java android应用程序中我希望前8个字节是一个long,代表我的xml文件的大小(以字节为单位)..其余的我将解析回一个xml文件。但是如果主机运行 C# 应用程序的机器不使用 64 位,这不会导致大问题吗?
如果有的话,有什么建议可以解决吗?我能想到的唯一听起来很愚蠢的事情就是向我的前缀发送一个前缀字节,表示我即将接收的字节数!
最佳答案
在 C# 中,long
只是 System.Int64 的另一个别名。无论您使用什么机器,Int64 始终是 64 位。
关于c# - 如何为在套接字上发送的文件创建长度前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20732306/