性能优化之——.NET(C#)调用webService获取客户端IP地址所属区域(异步回调)(二)

朋友们这次分享的是异步回调不是异步调用哦!

请注意喽!

功能描述接口地址方法名称以及参数说明,同上篇:.NET(C#)调用webService获取客户端IP地址所属区域(非异步)(一)(LZ比较懒,不想写太多哦!(⊙0⊙))

实现代码如下:

 1 namespace main
 2 {
 3     class Program
 4     {
 5         public static string Result = string.Empty;
 6
 7         static void Main(string[] args)
 8         {
 9
10             Stopwatch sw = Stopwatch.StartNew();
11
12             string strIP = "111.13.55.3";//请求的IP地址
13
14             Console.WriteLine("===== AsyncInvoke 异步回调开始 =====");
15
16             GetCityIpHandler handler = new GetCityIpHandler(GetIp);
17
18             ////其核心在于IAsyncResult接口的实现
19             IAsyncResult res = handler.BeginInvoke(strIP, new AsyncCallback(GetIpSyn), string.Format("===== 主线程耗时{0}毫秒! =====", sw.ElapsedMilliseconds));
20
21             Console.WriteLine("===== 继续执行其他的事情... =====");
22
23             Console.WriteLine("===== AsyncInvoke 异步回调完毕!=====");
24
25             sw.Stop();
26
27             Console.ReadLine();
28
29         }
30         public delegate string GetCityIpHandler(string strIp);
31         /// <summary>
32         /// 同步方法
33         /// </summary>
34         /// <param name="strIP"></param>
35         /// <returns></returns>
36         public static string GetIp(string strIp)
37         {
38             IpAddressSearchWebServiceSoapClient ws = new IpAddressSearchWebServiceSoapClient();
39             Stopwatch sw = Stopwatch.StartNew();
40             string[] strArea_IP = ws.getCountryCityByIp(strIp);
41             sw.Stop();//这里我们进行漫长的调用
42             return Result = string.Format("IP归属地为{0},查询耗时为{1}毫秒.", strArea_IP[1], sw.ElapsedMilliseconds);
43         }
44         /// <summary>
45         /// 异步回调方法
46         /// </summary>
47         /// <param name="result"></param>
48         static void GetIpSyn(IAsyncResult result)
49         {
50             GetCityIpHandler hl = (GetCityIpHandler)((AsyncResult)result).AsyncDelegate;//AsyncResult 继承自IAsyncResult接口
51             Result = hl.EndInvoke(result);
52             Console.WriteLine(Result); //打印调用GetIp返回的数据
53             object obj = result.AsyncState;
54             Console.WriteLine(obj);//打印返回结果:用户定义的对象,它限定或包含关于异步操作的信息。
55         }
56     }
57 }

测试结果如下:

好了朋友们,得睡了,做个健康的程序员,晚安!^_^

补充一句,如果您觉得此文还算不错的话可以收藏该文如果您觉得LZ的博客还不错的话可以关注我或者与我联系请多支持,谢谢!好文要顶 

时间: 2025-01-02 13:57:15

性能优化之——.NET(C#)调用webService获取客户端IP地址所属区域(异步回调)(二)的相关文章

.NET(C#)调用webService获取客户端IP地址所属区域(非异步)

功能描述: 此接口用于获取客户端访问的IP的地址所属的区域(国家,城市等).通过输入IP地址查询国家.城市.所有者等信息.没有注明国家的为中国输入参数:IP地址(自动替换 " ." 为 "."),返回数据: 一个一维字符串数组String(1),String(0) = IP地址:String(1) = 国家.城市.所有者等 1.1.1. 接口地址 Webservice方式: 例:http://webservice.webxml.com.cn/WebServices/

获取客户端IP地址定位城市信息

获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $IPaddress = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if (isset($_SERVER["HTTP_CLIENT_IP&qu

再论 ASP.NET 中获取客户端IP地址

说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分区域投放等. 1: HttpContext.Current.Request.ServerVariables["HTTP_VIA"]; 2: HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"

.net 获取客户端Ip地址

Request.ServerVariables["REMOTE_ADDR"]来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址. 要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables["HTTP_X_FORWARDED_FOR"]来读取. 不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables["HTTP

Mina获取客户端IP地址问题

使用Mina做Socket通信时,服务器端获取客户端IP地址,其实很简单,代码如下: @Override public void messageReceived(IoSession session, Object message) throws Exception { String clientIP = ((InetSocketAddress)session.getRemoteAddress()).getAddress().getHostAddress(); } 但是有时候却发现,session

java获取客户端IP地址和MAC地址

最近项目中要获得客户端的mac地址.服务端是移植的centos系统,arm架构的盒子.客户端是手机和移动设备.(其它场景应该也是类似的) 首先要获得ip地址: 根据客户端的http请求,利用request.getRemoteAddr()获取客户端Ip地址.在局域网内getRemoteAddr()和getRemoteHost()获得的结果相同.request.getRemoteAddr()是获得客户端的ip地址 .getRemoteHost()是获得客户端的主机名 .在有些场景中,可能有Squid

php 获取客户端IP地址经纬度所在城市

1. [代码]获取客户端IP地址经纬度所在城市 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php   $getIp=$_SERVER["REMOTE_ADDR"];   echo 'IP:',$getIp;   echo '<br/>';   $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=7IZ6fgGEGohCrRKUE9Rj4TSQ&a

获取客户端IP地址 via C#

获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己在项目中做过的事情,同时也想抛砖引玉.参考的博文及其作者在下文均有提及.待到自己以后对HTTP.TCP/IP等知识学深入了,一定再来这里深入讨论这个内容. 一.名词 首先说一下接下来要讲到的一些名词. 在Web开发中,我们大多都习惯使用HTTP请求头中的某些属性来获取客户端的IP地址,常见的属性是REMOTE_ADDR.

thinkphp之获取客户端IP地址

/** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @return mixed */ function get_client_ip($type = 0) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$type]; if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ar