簡體   English   中英

將byte []緩沖區重置為零?

[英]Resetting byte[] buffer to zeros?

在下面的套接字代碼中,我聲明了一個字節緩沖區並在循環中偵聽客戶端消息:

// Create some buffer
byte[] buffer = new byte[512];

while (true)
{
    // Listen for messages from Client

    int length = socket.getInputStream().read(buffer);

    if (length != -1)
        System.out.println(new String(buffer));
    else
        break;

    // Reset buffer here to zeros?
}

每次我都需要重置緩沖區的內容以接收新消息。 這樣做的正確方法是什么?

您不需要重置緩沖區,您需要一個String構造函數,它不會超過接收到的字節的緩沖區部分的末尾:

if (length != -1) {
    System.out.println(new String(buffer, 0, length));
}

現在,即使緩沖區很臟,您的代碼也能正常工作。

注意:為了更好的可移植性,將所需的Charset傳遞給String構造函數。 否則,您構造的String可能與通過套接字傳輸給您的字符串不匹配。

同意dasblinkenlight答案 ,但要回答問題本身(如何重置數組),您可以使用Arrays.fill為每個單元格設置一個值

byte[] array = new byte[10];
Arrays.fill(array, (byte)0);

暫無
暫無

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

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