在C#和Android应用程序之间序列化数据的最简单方法

在C#和Android应用程序之间序列化数据的最简单方法,c#,android,serialization,C#,Android,Serialization,我有一个用C语言编写的桌面应用程序,可以与Android应用程序进行通信。通过tcp/ip连接在它们之间传递数据的最简单方法是什么?我对性能不太感兴趣,而对易于实现更感兴趣。我自然不理解易于实现的含义。但正如我猜的,你应该需要这些: 在[C#]中: //util function public static void WriteBuffer(BinaryWriter os, byte[] array) { if ((array!=null) && (arr

我有一个用C语言编写的桌面应用程序,可以与Android应用程序进行通信。通过tcp/ip连接在它们之间传递数据的最简单方法是什么?我对性能不太感兴趣,而对易于实现更感兴趣。

我自然不理解
易于实现的含义。但正如我猜的,你应该需要这些:

在[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);
            }
        }
/** 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之间发送对象,请在C#
中使用
XML序列化,在Java中使用
XML解析器。你可以在互联网上搜索这些信息;网站上有很多例子


在Android部分,为了便于使用,您可以使用库。

我建议通过socket使用gzipstream。请参阅:[gzipstream for forward only stream over sockets][1][Using gzipstream for Client/Server Async Communication][2][3][1]:[2]:[3]:为了便于使用,我建议序列化为JSON或类似格式并传递消息。我没有任何Android经验,但我只能假设有几十个JSON反序列化库。如果不需要序列化二进制数据,JSON在Android端非常简单。使用GSON库(Google的JSON库)。