62,243
社区成员




var url = x + string.Format("http://192.168.1.108:8080/?numbers={0}&text={1}", n, HttpUtility.UrlEncode(str));
new WebClient().DownloadData(url)
这样使用 http GET 方式就把短信推给它去发送了。
第二个,如果你的局域网里有不只一个安卓短信猫,比如说你把多个手机放在wifi可达的范围内,例如抽屉里、书架上、柜子里,不同地方,任意一个停掉了都不会影响发送,那么你需要先找到一个反应最快的短信猫,然后才调用上面的发送命令。那么找到一个最快的短信猫的地址,可以这样写private static string[] 本地安卓短信猫服务地址 = new string[] {
"http://192.168.1.100:8080/",
"http://192.168.1.101:8080/" ,
"http://192.168.1.102:8080/" ,
"http://192.168.1.103:8080/" ,
"http://192.168.1.104:8080/" ,
"http://192.168.1.105:8080/" ,
"http://192.168.1.106:8080/" ,
"http://192.168.1.107:8080/" ,
"http://192.168.1.108:8080/" ,
"http://192.168.1.109:8080/" ,
"http://192.168.1.110:8080/" ,
"http://192.168.1.111:8080/" ,
};
private static string 选择一个短信猫()
{
string result = null;
var ehs = new List<ManualResetEvent>();
foreach (var addr in 本地安卓短信猫服务地址)
{
var x = addr;
var eh = new ManualResetEvent(false);
ehs.Add(eh);
new Thread(() =>
{
if (测试可访问(x))
{
result = x;
eh.Set();
}
}).Start();
}
WaitHandle.WaitAny(ehs.ToArray(), 60000);
return result;
}
private static Random rnd = new Random();
private static bool 测试可访问(string url)
{
try
{
url += "?phoneStatus=1&_=1424076" + rnd.Next(1000000);
//var res = new HttpClient().GetStringAsync(url).Result;
new WebClient().DownloadData(url);
return true;
}
catch
{
return false;
}
}
通过一句简单的http GET命令探测出响应最快的短信猫的地址。