0

我通过 TCP 套接字异步发送数据。我目前连接到本地计算机上的 SMSC 模拟器,只是为了检查是否正确创建了所有数据包,然后再连接到真实的东西。

我只发送了一次 PDU,SMSC 完美接收,并生成响应 PDU 并将其发送回来,但之后模拟器上会弹出一条错误消息,指出它无法接收 100 条消息。问题是我只发送一次,没有循环运行不断发送消息,我已经调试并检查它只发送一次。

我认为问题可能出在PDU的创建上。我首先创建一个大小为 1024 的字节数组,然后根据需要进行填充。填满时,它不会使用数组的整个空间。所以我在想,当模拟器收到它时,从数组中检索数据,然后它在实际数据之后读取数组中的“0”字节作为新消息,因为它给了我一条响应消息,说数据无效。

有没有办法避免这种情况,或者我只是在这里遗漏了什么?据我说,当接收字节数组中的值时,你应该只使用必要的编码来检索数据,其余的“0”字节应该被忽略吗?

抱歉,如果我的问题含糊不清。

4

1 回答 1

0

问题确实是数组中的 0bytes。

在阅读了 Stack Overflow 上发表的一篇文章后,我通过从数组中删除 0 字节来解决它:

这是解决方案:

    private byte[] CleanArray(byte[] array)
    {
        int i = array.Length - 1;

        while (array[i] == 0)
        {
            i--;
        }

        byte[] cleanedArray = new byte[i + 1];
        Array.Copy(array, cleanedArray, i + 1);

        return cleanedArray;
    }
于 2012-06-26T07:12:25.057 回答