2014-04-27 26 views
1

我從java服務器發送字符串到C客戶端。在客戶端中,字符串的開始處總是有2個額外的字節。我猜java用它們來表示字符串的大小?用於java字符串中前2個字節的用法

我用此代碼發送字符串 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); dos.writeUTF(randomString);

+6

你怎麼送呢? –

+0

通過調用'writeUTF'來發送字符串嗎? – dasblinkenlight

+0

是的,我用了writeUTF – user567

回答

3

如果您是通過調用writeUTF發送字符串到服務器,電線格式確實包括前兩個字節發送作爲short字符串的長度:

將一個字符串寫入到指定的DataOutput以機器無關的方式使用修改的UTF-8編碼。 首先,寫出兩個字節,就好像通過writeShort方法給出的字節數跟在之後。該值是實際寫出的字節數,而不是字符串的長度。 (強調增加)

你可以在源代碼here中查找正在進行的細節。

2

綜觀源代碼,Java文檔告訴我們:

寫入使用UTF-8修改 編碼以與機器無關的方式的字符串到指定的DataOutput。

首先,寫出兩個字節,就好像通過writeShort方法 給出接下來的字節數。該值是實際寫出的 字節的數量,而不是字符串的長度。

Click for the source code on GrepCode.