[英]Sending and receiving data using Sockets
我想了解更多关于网络的知识,所以我决定使用套接字做一个小项目。 我已经成功地创建了一个我知道非常基本的回声服务器。
下一步是将各种文件(文本文件、图像甚至视频?)从服务器发送到客户端,反之亦然。 我一直在尝试使用 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);
客户端(in 是一个 DataInputStream):
ObjectInputStream ois = new ObjectInputStream(in);
ois.readObject();
提前感谢您的所有帮助,如果您认为自己知道一篇文章或教程可以帮助我了解更多信息,这也会有所帮助!
我可以将所有类型的数据(文本、图像、视频)转换为字节,发送它,然后将其全部转换为以前的数据吗?
当然。
或者我是否需要为每种类型的数据指定一个特定的函数?
这不是“或”——如果您想自己将几种类型的数据转换为字节,那么您可能需要为每种类型使用单独的函数。 请注意,如果您要发送文件,则不需要任何转换,因为文件的内容已经只是字节。
我可以将文本文件或图像转换为对象,然后使用 ObjectOutputFile 发送吗?
您可以使用 ObjectOutput Stream发送它。
如果是这样,那么我如何在另一侧解压缩它?
使用 ObjectInputStream。
我试过 ObjectOutputFile.readObject 但我真的不知道在那之后该怎么做。`
Java 中没有像 ObjectOutputFile.readObject 这样的方法。
是的,您可以使用对象数据发送。 您可能需要为对象定义一个新类,然后通过 getter 回调数据。 在客户端,您需要将 Object 值声明为 ois.readObject()。 喜欢:
对象对象 = ois.readObject();
补充一点建议,感觉你现在对socket还不是很熟悉。 所以,像计算机网络(Kurose Ross)这样的教科书会很有帮助。 此外,如果您计划在 C 和 Java 之间传输数据,则不能使用 Object,因为 C 本身不支持它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.