我有一个用 C# 编写的桌面应用程序,它将与 Android 应用程序通信。通过 tcp/ip 连接在它们之间传递数据的最简单方法是什么?我对性能不太感兴趣,对易于实施更感兴趣。
问问题
778 次
1 回答
2
我自然不明白你的意思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库以方便使用。
于 2012-10-31T07:00:35.840 回答