Windows客户端与Android服务端的Socket通信
2010-06-04 14:09:00 来源:WEB开发网using System.Diagnostics;
namespace G3Exp.Class
{
public static class clsAndroid
{
static private void Connect(String server, String message)
{
try
{
//通过SDK下面的ADB命令来通知Android开侦听10086端口
Process p = new Process();
p.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory+@" oolsadb.exe";
p.StartInfo.Arguments = "forward tcp:12580 tcp:10086";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
Int32 port = 12580;
TcpClient client = new TcpClient(server, port);
//把URL发给TCP服务端
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
client.Close();
}
catch (ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
}
public static void OpenWeb(string strUrl)
{
Connect("127.0.0.1", strUrl);
}
}
}
简单说明一下:
(1)在Android中,在打开USB调试的情况下使用USB数据线插入PC后,Android与PC会创建虚拟网络,并且IP为127.0.0.1。但在一些OPhone手机中,使用127.0.0.1确无法连接成功。这时可自行设置IP:
set ADBHOST=192.168.10.1
adb kill-server
adb start-server
(2)这里使用了一个新的线程来侦听和打开网站的工作,以避免造成主UI线程的阻塞。
(3)由于我对这块功能之前没有做过,故一定会有很多可以改进的地方。
更多精彩
赞助商链接