簡體   English   中英

在Java中的數據報套接字編程中發送和接收int數組

[英]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提供未知的標頭值000​​00

我們通過基本更改解決了該問題。 我們使用類似“ 100200300 ...”的字符串通過用兩個0'分隔元素來表示數組,因此,我們沒有使用ArrayList。

您必須使用getbyte()方法獲取字節並將這些字節放入數據報包實例中,然后將其傳遞給客戶端或發送給客戶端...

采用

arrayName.getBytes(); /// save this into some byte[] temp = new byte[size];

並制作一個數據報包,並放入其argumnets並將其發送

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM