簡體   English   中英

Android - 發送和接收字節

[英]Android - Send and receive byte

我有一個 tcp 連接,我嘗試以字節為單位發送和接收消息,但我不知道它是如何工作的。

這是我要發送的代碼:

public void write(String message) {
    try {
        byte[] b = message.getBytes("UTF-8");
        writer.write(b.toString());
        writer.newLine();
        writer.flush();
    } catch (IOException e) {
        Log.e(MainActivity.TAG, "exception", e);
        e.printStackTrace();
    } catch (Exception e) {
        Log.e(MainActivity.TAG, "exception", e);
        e.printStackTrace();
    }
}

這是為了接收

String message = client.reader.readLine();
JSONObject json = new JSONObject(message);

我再試試 :)

如何將接收到的字節數組轉換為 mysql 數據庫的具有完整 unicode 的字符串? 我的數據庫使用字符集 Utf8m4。

這是我的代碼

byte[] message = System.Text.Encoding.UTF8.GetBytes(client.reader.ReadLine()); // client.reader.ReadLine() is already a byte[]

string encoded = System.Text.Encoding.UTF8.GetString(message);
JToken token = JObject.Parse(encoded);

我的代碼不起作用。 我得到:

{"Id":"Test","Content":"hey???"}
    byte[] b = message.getBytes("UTF-8");
    writer.write(b.toString());

如果這是您要問的代碼,那是毫無意義的。 當然應該是

writer.write(message);

目前,您正在發送[B@NNNNNNNNNNN形式的內容,它是字節數組的哈希碼。

我找到了解決方案,感謝@EJP。

在 Java(客戶端)中

writer.write(B64.encode(message)); // message is a string

在 C# 中(服務器端)

string encoded = System.Text.Encoding.UTF8.GetString(message);
JToken token = JObject.Parse(encoded);

為了將字節保存在數據庫中,我使用 blob 作為類型。

Encoding.UTF8.GetBytes(bluuub)

從數據庫中獲取字節

byte[] b = (byte[])reader.GetValue(0);
string bluuub = Encoding.UTF8.GetString(b);

暫無
暫無

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

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