我正在尝试更多地了解网络,所以我决定使用套接字做一个小项目。我已经成功创建了一个我知道非常基本的echo服务器。
下一步是将各种文件(文本文件,图像甚至视频?)从服务器发送到客户端,反之亦然。我一直在尝试使用FIleOutputStream,ObjectOutputStream(显然输入),我甚至尝试过Byte Buffer但是通过阅读Java文档,我开始明白我对数据真的不太了解....
所以我的问题是:
这就是我一直在尝试做的事情(我不会发布所有代码,因为我认为只有这个特殊部分很重要:
服务器:(输出是DataOutputStream)
ObjectOutputStream oos = new ObjectOutputStream(out);
Path path = Paths.get("stuff/Folder.jpg");
byte[] data = Files.readAllBytes(path);
oos.write(data);
client(in是一个DataInputStream):
ObjectInputStream ois = new ObjectInputStream(in);
ois.readObject();
感谢您提前获得的所有帮助,如果您认为自己知道的文章或教程可以帮助我了解更多信息,那么它也会有所帮助!
答案 0 :(得分:1)
我可以将所有类型的数据(文本,图像,视频)转换为字节,发送然后将其全部转换为以前的数据吗?
不确定
或者我是否需要针对每种类型的数据使用特定功能?
那不是"或" - 如果您想自己将几种类型的数据转换为字节,那么您可能需要为每种类型分别使用一个函数。请注意,如果您要发送文件,则不需要任何转换,因为文件的内容已经只是字节。
我可以将文本文件或图像转换为Object,然后使用ObjectOutputFile发送吗?
您可以使用ObjectOutput 流发送它。
如果是,那我怎么能在另一方面解压缩呢?
使用ObjectInputStream。
我已经尝试过ObjectOutputFile.readObject但我真的不知道该怎么做。
Java中没有像ObjectOutputFile.readObject那样的方法。
答案 1 :(得分:0)
是的,您可以使用对象数据发送。您可能需要为对象定义新类,然后通过getter调用数据。在客户端,您需要将Object值声明为ois.readObject()。像:
Object object = ois.readObject();
只需添加一点建议,我觉得你现在对socket不太熟悉。因此,像Computer Networking(Kurose Ross)这样的教科书会很有帮助。此外,如果您计划在C和Java之间传输数据,则不能使用Object,因为C本身不支持它。