通过java中的套接字发送序列化文件

时间:2013-05-21 10:41:58

标签: java sockets serialization file-upload client-server

System.out.println("Java is awesome!");

请原谅我的热情;我无法相信Java是多么强大,它不仅能够保存对象(并加载它们),而且还有其主要目的,通过网络发送它们。这正是我必须做的,因为我正在进行beta测试。在这个beta测试中,我给了测试人员一个版本的游戏,它将数据保存为大多数人都不知道的对象(我们是开明的人哈哈哈)。除了它不适合长期持久性之外,这将工作得很好和花花公子。但是,我可以通过一些客户端/服务器与套接字的交互来收集他们的record.sercounter.bin文件(后者告诉我record.ser中有多少个对象)(我一无所知,直到我开始阅读它,但我仍然感到无能)。我在网上看到的大多数例子(例如:http://uisurumadushanka89.blogspot.com/2010/08/send-file-via-sockets-in-java.html)都是将文件作为字节流发送,即一些ObjectOutputStream和ObjectInputStream。这正是我当前版本的游戏用于保存/加载GameData的内容。

对于这个冗长的介绍感到抱歉,但是你知道我必须做什么(步骤方面,所以我可以理解)实际发送整个文件。我是否必须逐字节(或逐个对象)重建文件?

2 个答案:

答案 0 :(得分:1)

实际上它非常简单。只需使您的对象可序列化,并创建一个ObjectOutputStream和ObjectInputStream,它们连接到您拥有的任何底层流,比如FileInputStream等。然后只需将()所需的任何对象写入流并在另一侧读取它。

对你说example

对于套接字,它将类似于

ObjectOutputStream objectOut = new ObjectOutputStream(serverSocket.getOutputStream());
ObjectInputStream objectIn = new ObjectInputStream(clientSocket.getInputStream());

答案 1 :(得分:0)

Java Serialization是一个非常强大的协议。 java.io.ObjectOutputStreamjava.io.ObjectInputStream是较高级别的课程,当然包含较低级别的课程,例如FileInputStreamFileOutputStream。我的问题是,为什么你希望在Objects中读取整个文件时逐字节读取文件。

以下是该程序的一个很好的解释。

http://www.tutorialspoint.com/java/java_serialization.html