0

我在从 UDP 接收解密消息时遇到问题。

我的代码:

byte[] receiveData= new byte[1024];

DatagramPacket pakiet = new DatagramPacket(receiveData, receiveData.length);
udp.receive(pakiet);

String wiadomosc = new String(pakiet.getData());
publishProgress(wiadomosc);
String szyfr = main.preferences.getString("SZYFR_TCP", "");
if(!szyfr.equals("1"))
{
    enc = new Encryptor(kluczByte, getCode());
    Log.e("myApp", "jestem 2");
    Log.e("message = ","" + wiadomosc);

    wiadomosc = enc.decrypt(wiadomosc);
    publishProgress(wiadomosc);
}

在日志中,我看到该变量wiadomosc有数据和许多这样的坏字符:

字节数组reciveData有 1024 个元素。我认为我的接收消息较短,因此必须将元素添加到 1024。如何从字符串中删除这些字符?因为我无法解密这个字符串,因为我得到一个“损坏的垫块”异常。

4

2 回答 2

1

我认为您只是在调用pakiet.getData(). 因此,您可以调用pakiet.getLength()以获取缓冲区中的确切数据量。如果您使用正确的偏移量和长度调用解密函数,您应该会获得更大的成功。

于 2012-12-02T14:35:08.897 回答
1

UDP 头包含 UDP 数据的长度。所以java中必须有一些API来提取那个长度。长度以字节为单位。receivedData所以用那个长度初始化你。

于 2012-12-02T14:41:43.903 回答