【发布时间】:2015-09-27 16:26:32
【问题描述】:
我已经问过这个问题https://stackoverflow.com/questions/32735189/sending-files-from-java-server-to-unity3d-c-sharp-client,但我发现通过内置操作在 Java 和 C# 之间发送文件并不是最佳解决方案,因为我还需要其他消息,而不仅仅是文件内容。
因此,我尝试使用 Protobuf,因为它速度快并且可以独立于平台对对象进行序列化/反序列化。我的 .proto 文件如下:
message File{
optional int32 fileSize = 1;
optional string fileName = 2;
optional bytes fileContent = 3;
}
所以,我在生成的 .java 文件中为每个变量设置了值:
file.setFileSize(fileSize);
file.setFileName(fileName);
file.setFileContent(ByteString.copyFrom(fileContent, 0, fileContent.length);
我看过很多关于如何将对象写入文件并从中读取的教程。但是,我找不到任何关于如何将文件从服务器套接字发送到客户端套接字的示例。
我的目的是在 java 服务器上序列化对象(文件大小、文件名和文件内容)并将这些信息发送到 C# 客户端。因此,该文件可以被反序列化并存储在客户端。
在我上面的示例代码中,服务器读取文件(图像文件)的字节并将其写入输出流,以便客户端可以通过输入流读取字节并将其写入磁盘。我想通过序列化生成的 .proto 文件来实现同样的目的。
谁能给我一个例子或提示我如何做到这一点?
【问题讨论】:
标签: java c# unity3d protocol-buffers protobuf-net