0
我有一個用C#編寫的桌面應用程序,它將與Android應用程序進行通信。通過tcp/ip連接在它們之間傳遞數據的最簡單方法是什麼?我對性能不太感興趣,對易於實現更感興趣。在C#和Android應用程序之間序列化數據的最簡單方法
我有一個用C#編寫的桌面應用程序,它將與Android應用程序進行通信。通過tcp/ip連接在它們之間傳遞數據的最簡單方法是什麼?我對性能不太感興趣,對易於實現更感興趣。在C#和Android應用程序之間序列化數據的最簡單方法
我自然不明白你的意思ease of implementation
。但正如我猜測,如果你需要這些:
In [C#]:
//util function
public static void WriteBuffer(BinaryWriter os, byte[] array) {
if ((array!=null) && (array.Length > 0) && (array.Length < MAX_BUFFER_SIZE)) {
WriteInt(os,array.Length);
os.Write(array);
} else {
WriteEmptyBuffer(os);
}
}
//write a string
public static void WriteString(BinaryWriter os, string value) {
if (value!=null) {
byte[] array = System.Text.Encoding.Unicode.GetBytes(value);
WriteBuffer(os,array);
} else {
WriteEmptyBuffer(os);
}
}
In [Java] Android:
/** Read a String from the wire. Strings are represented by
a length first, then a sequence of Unicode bytes. */
public static String ReadString(DataInputStream input_stream) throws IOException
{
String ret = null;
int len = ReadInt(input_stream);
if ((len == 0) || (len > MAX_BUFFER_SIZE)) {
ret = "";
} else {
byte[] buffer = new byte[len];
input_stream.readFully(buffer);
ret = new String(buffer, DATA_CHARSET);
}
return (ret);
}
對於進一步的結構性數據,例如,你想發送C#和Java之間的對象請使用XML Serialization in C#
和XML Parser in Java
。你可以在互聯網上搜索這些;很多例子都在Code Project網站上。
在Android中的一部分,你可以使用XStream庫的易用性。
我建議gzipstream over socket。 見: [gzipstream用於向前僅流過插座] [1] [使用GZipStream爲客戶機/服務器異步通信] [2] [解壓縮從服務器一個壓縮響應(插座)] [3] [1]:http://stackoverflow.com/questions/11050015/gzipstream-for-forward-only-stream-over-sockets [2]:HTTP://stackover流量/問題/ 7922206 /using-gzipstream-for-client-server-async-communication [3]:http://stackoverflow.com/questions/2619058/decompress-a-gzipped-response-from-the -server-socket – Cheung
爲了便於使用,我建議序列化爲JSON或類似的並傳遞消息。我沒有任何Android經驗,但我只能假設有幾十個JSON de /序列化庫。 –
我同意@MikeCaron。如果你不需要序列化二進制數據,JSON在Android方面非常簡單。使用GSON庫(Google的JSON庫)。 – Shellum