当前位置:  开发笔记 > 编程语言 > 正文

使用Java中的UDP在网络上发送对象

如何解决《使用Java中的UDP在网络上发送对象》经验,为你挑选了1个好方法。

我还没有找到我所遇到的问题的确切答案,所以无论如何我都会问这个问题,如果我这样做了,事实上,重新提出一个已被问过的问题,我道歉.

我正在为我的Java类做另一个实验任务,对于本周的实验,我必须让UDP服务器通过网络发送一个Message对象,然后我必须让UDP客户端读取该消息.Message本身只是一个具有String消息和String用户名的Object; 相当随意.消息是可序列化的.

现在,我遇到的问题是如何实际在DatagramPacket中通过网络发送消息对象?实际的构造函数让我输入一个字节数组,数组的大小,InetAddress和端口号.我的最后一个问题是:如何找出数组的大小,以及如何将我的Message转换为要发送的字节?



1> FlySwat..:

您需要将消息类序列化为字节数组.这将是您发送的字节数组(并且在那时很容易获得大小).

在客户端上,您需要将字节数组反序列化为Message对象.

Java提供了一组用于处理序列化/反序列化的类,要序列化的对象必须实现"Serializable"接口.

像这样的东西会起作用:

// Serialize to a byte array
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
ObjectOutput oo = new ObjectOutputStream(bStream); 
oo.writeObject(messageClass);
oo.close();

byte[] serializedMessage = bStream.toByteArray();

并在接收端:

ObjectInputStream iStream = new ObjectInputStream(new ByteArrayInputStream(recBytes));
Message messageClass = (Message) iStream.readObject();
iStream.close();

注意,您应该创建一个在客户端和服务器之间共享的公共接口,这样可以轻松地对有效负载进行序列化/反序列化.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有