[英]int array sent and receive in datagram socket programming in java
我尝试通过数据报套接字发送一个整数数组。 做到这一点的最佳方法是什么。 我的发送代码是:
public void sendObj(Object obj) {
try{
byteArr = new ByteArrayOutputStream();
objOut = new ObjectOutputStream(byteArr);
objOut.writeObject(obj);
byte[] b = byteArr.toByteArray();
DatagramPacket dgram = new DatagramPacket(b, b.length, InetAddress.getByName("230.0.0.1"), 4446); // multicast
socket.send(dgram);
System.out.println("Package is sent!");
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
}
接收代码为:
byte[] b = new byte[65535];
ByteArrayInputStream b_in = new ByteArrayInputStream(b);
DatagramPacket dgram = new DatagramPacket(b, b.length);
socket.receive(dgram); // blocks
ObjectInputStream o_in = new ObjectInputStream(b_in);
Object o = o_in.readObject();
dgram.setLength(b.length); // must reset length field!
b_in.reset(); //
但是,当我收到它时,它会为StreamStream提供未知的标头值00000
我们通过基本更改解决了该问题。 我们使用类似“ 100200300 ...”的字符串通过用两个0'分隔元素来表示数组,因此,我们没有使用ArrayList。
您必须使用getbyte()
方法获取字节并将这些字节放入数据报包实例中,然后将其传递给客户端或发送给客户端...
采用
arrayName.getBytes(); /// save this into some byte[] temp = new byte[size];
并制作一个数据报包,并放入其argumnets并将其发送
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.