精华内容
下载资源
问答
  • wcf获取客户端ip

    2017-12-20 16:17:21
    获取客户端ip和端口号  public string ClientIpAndPort()  {  OperationContext context = OperationContext.Current;  MessageProperties properties = context.IncomingMessagePropert
    获取客户端ip和端口号
        public string ClientIpAndPort()
            {
                OperationContext context = OperationContext.Current;
                MessageProperties properties = context.IncomingMessageProperties;
                RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
                return endpoint.Address + ";" + endpoint.Port.ToString();
            }
    展开全文
  • 用于.net获取客户端Mac地址,和IP地址,经过测试可以使用,文件中有源程序。
  • C#代码:获得链接到WCF服务的WPF客户端的IP地址
  • 主要介绍了C#编程获取客户端计算机硬件及系统信息功能,可实现针对客户端系统CPU、硬盘、主板等硬件信息及客户端操作系统、IP、MAC等信息的操作技巧,需要的朋友可以参考下
  • http://www.itbobo.com/asp-net-to-obtain-client-ip-and-mac-address.html 最近在做电子政务,给某局以及直属单位做统一的用户登录功能。登录界面有多级选择列表,如:局单位-->局业务处室-->局用户-->用户名...

    http://www.itbobo.com/asp-net-to-obtain-client-ip-and-mac-address.html

    最近在做电子政务,给某局以及直属单位做统一的用户登录功能。登录界面有多级选择列表,如:局单位-->局业务处室-->局用户-->用户名,每次登录都得这么选择,繁琐的操作对那些机关领导来说确实是一件不容易的事,为此就希望把用户选择的信息,初始化一次,以后登录就不用再选择那么多了。于是就想到记录客户端的MAC地址来做为机器标识。但要在客户端能快速准确的获取到MAC地址还是一件不太容易的事。主要常见的方式有以下几种:

    方法一:Javascript结合系统的ActiveX

    优点:无需开发额外的代码,轻量级的实现。不需要服务器端进行处理,有客户端自行获取,传递到服务器端,速度比在服务器端获取好。 
    缺点:受客服端平台的限制,如安全级别设置较高,则无常正常执行。还有情况就是可靠性不是怎么好,有获取不到的情况。

    其实最关键的还是用到两个ActiveX: 
    <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT> 
    <OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>

    两个ActiveX都是系统自带,不用去下载或注册。

    Code

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    2.  
    3. <html>  
    4.     <head><title>WMI Scripting HTML</title>  
    5. <META http-equiv="Content-Type" content="text/html; charset=gb2312">  
    6. <script language="JScript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>  
    7. document.forms[0].txtMACAddr.value=unescape(MACAddr);  
    8. document.forms[0].txtIPAddr.value=unescape(IPAddr);  
    9. document.forms[0].txtDNSName.value=unescape(sDNSName);  
    10.  //document.formbar.submit();  
    11.   </script>  
    12.  
    13. <script language="JScript" event=OnObjectReady(objObject,objAsyncContext) for=foo>  
    14.    if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)  
    15.    {  
    16.     if(objObject.MACAddress != null && objObject.MACAddress != "undefined")  
    17.     MACAddr = objObject.MACAddress;  
    18.     if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) !="undefined")  
    19.     IPAddr = objObject.IPAddress(0);  
    20.     if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")  
    21.     sDNSName = objObject.DNSHostName;  
    22.     }  
    23.   </script>  
    24.  
    25.     <META content="MSHTML 6.00.2800.1106" name=GENERATOR>  
    26. </head>  
    27. <body>  
    28. <object id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></object>  
    29. <object id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></object>  
    30.    <script language="JScript">  
    31.        var service = locator.ConnectServer();  
    32.        var MACAddr ;  
    33.        var IPAddr ;  
    34.        var DomainAddr;  
    35.        var sDNSName;  
    36.        service.Security_.ImpersonationLevel=3;  
    37.        service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');  
    38.    </script>  
    39.  
    40. <form  runat="server" id="formfoo" name="formbar" method="post">  
    41.     <input  name="txtMACAddr"/>  
    42.     <input  name="txtIPAddr"/>  
    43.     <input  name="txtDNSName"/>  
    44.     <asp:Button ID="Button1" runat="server" Text="Button" οnclick="Button1_Click" />  
    45. </form>  
    46. </body>  
    47. </html> 

     

    方法二:调用Win32API(推荐)

    优点:成功率较高,不受客户浏览器的限制。 
    缺点:只能是Windows系统

    Code

    1.     [DllImport("Iphlpapi.dll")]  
    2.     private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);  
    3.     [DllImport("Ws2_32.dll")]  
    4.     private static extern Int32 inet_addr(string ip);  
    5.  
    6. private string GetClientIP()  
    7.     {  
    8.         string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];  
    9.         if (null == result || result == String.Empty)  
    10.         {  
    11.             result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];  
    12.         }  
    13.  
    14.         if (null == result || result == String.Empty)  
    15.         {  
    16.             result = HttpContext.Current.Request.UserHostAddress;  
    17.         }  
    18.         return result;  
    19.     }  
    20.  
    21. /// <summary>  
    22.     /// 获取Mac地址信息  
    23.     /// </summary>  
    24.     /// <param name="IP"></param>  
    25.     /// <returns></returns>  
    26.     public static string GetCustomerMac(string IP)  
    27.     {  
    28.         Int32 ldest = inet_addr(IP);  
    29.         Int64 macinfo = new Int64();  
    30.         Int32 len = 6;  
    31.         int res = SendARP(ldest, 0, ref macinfo, ref len);  
    32.         string mac_src = macinfo.ToString("X");  
    33.  
    34.         while (mac_src.Length < 12)  
    35.         {  
    36.             mac_src = mac_src.Insert(0, "0");  
    37.         }  
    38.  
    39.         string mac_dest = "";  
    40.  
    41.         for (int i = 0; i < 11; i++)  
    42.         {  
    43.             if (0 == (i % 2))  
    44.             {  
    45.                 if (i == 10)  
    46.                 {  
    47.                     mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));  
    48.                 }  
    49.                 else 
    50.                 {  
    51.                     mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));  
    52.                 }  
    53.             }  
    54.         }  
    55.  
    56.         return mac_dest;  
    57.     } 

     

    方法三:后台进程调用nbtstat命令

    优点:无需额外开发组件,不受客户端平台的限制 
    缺点:受网络范围的限制,成功率较低,速度慢。

    具体实现原理:通过nbtstat -a IP 命令将对方计算机的信息输出管道,然后捕获管道输出的内容,再通过正则表达式将MAC筛选出来。

    Code

    1. public static string GetCustomerMac(string IP)  
    2. {  
    3.     string dirResults = "";  
    4.     ProcessStartInfo psi = new ProcessStartInfo();  
    5.     Process proc = new Process();  
    6.     psi.FileName = "nbtstat";  
    7.     psi.RedirectStandardInput = false;  
    8.     psi.RedirectStandardOutput = true;  
    9.     psi.Arguments = "-A " + IP;  
    10.     psi.UseShellExecute = false;  
    11.     proc = Process.Start(psi);  
    12.     dirResults = proc.StandardOutput.ReadToEnd();  
    13.     proc.WaitForExit();  
    14.     dirResults = dirResults.Replace("\r""").Replace("\n""").Replace("\t""");  
    15.     Regex reg = new Regex("([0-9A-Fa-f]{2})(-[0-9A-Fa-f]{2}){5}", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.RightToLeft);  
    16.     Match mc = reg.Match(dirResults);  
    17.     if (mc.Success)  
    18.     {  
    19.         try 
    20.         {  
    21.             return mc.Groups[0].Value.ToString();  
    22.         }  
    23.         catch 
    24.         {  
    25.             return "";  
    26.         }  
    27.     }  
    28.     else 
    29.     {  
    30.         reg = new Regex("Host not found", RegexOptions.IgnoreCase | RegexOptions.Compiled);  
    31.         mc = reg.Match(dirResults);  
    32.         if (mc.Success)  
    33.         {  
    34.             return "Host not found!";  
    35.         }  
    36.         else 
    37.         {  
    38.             return "";  
    39.         }  
    40.     }  

     

    上述三种方式,都经过测试,第一种方式,会有获取不到MAC地址的情况;第三种方式,奇慢无比,尤其当服务器有多个网卡时,相当慢。我自己的机器有两个网卡时,程序基本卡死,半天才能响应;改成第二种之后,情况改观了很多,效率都还不错。如果使用ASP.NET获取MAC地址,推荐使用第二种方式。

    展开全文
  • WCF可以在服务端获取IP地址,但如何获取Mac地址? (客户端获取后上传到服务端的方式就不要回复了)
  • 版权声明 请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。...namespace WcfService3 { // 注意: 如果更改此处的...

    版权声明

    请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。

    using System; using System.ServiceModel; using System.ServiceModel.Channels; namespace WcfService3 { // 注意: 如果更改此处的类名“Service1”,也必须更新 Web.config 和关联的 .svc 文件中对“Service1”的引用。 public class Service1 : IService1 { public string GetData(int value) { //提供方法执行的上下文环境 OperationContext context = OperationContext.Current; //获取传进的消息属性 MessageProperties properties = context.IncomingMessageProperties; //获取消息发送的远程终结点IP和端口 RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; Console.WriteLine(string.Format("Hello {0},You are from {1}:{2}", value, endpoint.Address, endpoint.Port)); return string.Format("Hello {0},You are from {1}:{2}", value, endpoint.Address, endpoint.Port); } public CompositeType GetDataUsingDataContract(CompositeType composite) { if (composite.BoolValue) { composite.StringValue += "Suffix"; } return composite; } } }

    展开全文
  • 取客戶端ip userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") hostname=Request.ServerVariables("HTTP_HOST")取mac地址 mac=...

    取客戶端ip  

    userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
     If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")

     hostname=Request.ServerVariables("HTTP_HOST")

    取mac地址
     mac=GetMACAddress(userip)

    Function GetMACAddress(strIP)
    Set net = Server.CreateObject("wscript.network")
    Set sh = Server.CreateObject("wscript.shell")
    sh.run "%comspec% /c nbtstat -A " & strIP & " > c:/" & strIP & ".txt",0,true
    Set sh = nothing
    Set fso = createobject("scripting.filesystemobject")
    Set ts = fso.opentextfile("c:/" & strIP & ".txt")
    macaddress = null
    Do While Not ts.AtEndOfStream
    data = ucase(trim(ts.readline))
    If instr(data,"MAC ADDRESS") Then
    macaddress = trim(split(data,"=")(1))
    Exit Do
    End If
    loop
    ts.close
    Set ts = nothing
    fso.deletefile "c:/" & strIP & ".txt"
    Set fso = nothing
    GetMACAddress = macaddress
    End Function

    展开全文
  • 在项目中用到WCF,项目的结构是这样的: 在SPI项目中编写该解决方案中公共的类及函数; 在WCFService项目中写的是svc文件及WCF服务... 在Client中添加WCF服务引用的时候该WCFService项目,然后再UI项目中初始化...
  • 由于对移动平台充满着好奇与兴趣,最近着手了iPhone开发和学习。学习的路线是从... 一些复杂的逻辑处理放到服务端实现,客户端与服务端通过XML交互,在iPhone客户端解析XML通过cocoa展示数据。由于iPhone和DoNe
  • 今天新开了一个系列文章《WCF热门问题编程示例》:主要是针对WCF里比较有价值的问题的收集和...这个系列的第一篇文章:WCF热门问题编程示例(1):WCF服务如何获得客户端IP地址信息。这个问题是在 MSDN中文论坛一个...
  • C# WCF 多服务接口开发

    2020-09-18 11:22:57
    LogFactory.Log.Info("WCF 服务已开启"); 其中SystemAdmin.cs为: public class SystemAdmin : ISystemAdminService { public string GetData(int value) { return string.Format("You entered: {0}", value); } } ...
  • C# 调用WCF服务的两种方法

    万次阅读 2018-08-21 17:32:11
    项目简介 之前领导布置一个做单点登录的...具体到我们His开发商来说就是实现一个登录是调用第三方WCF接口获取第三方登录用户在His登录的用户名、密码后续可能还会包括CA信息。 之前有自己写过WCF服务给第三方调...
  • iPhone中调用WCF服务

    2019-09-27 20:01:00
    本文介绍的是跨平台iPhone中调用WCF服务,WCF是由微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,由 .NET Framework 3.0+开始引入 iPhone中调用WCF服务是本文要介绍的内容,由于对移动平台充满...
  • 由于对移动平台充满着好奇与兴趣,最近着手了iPhone开发和学习。学习的路线是从objective-c到cococa。...对于产品的基本想法是服务端用.net,手机客户端用iPhone。 一些复杂的逻辑处理放到服务端...
  • iPhone调用WCF服务

    千次阅读 2012-05-16 11:44:41
    之前在与服务器通讯时,都是用的Web Service,现在有的后台开始采用WCF服务。 WCF概述。 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口 可以翻译为Windows通讯接口,它是...
  • iPhone中调用WCF服务是本文要介绍的内容,由于对移动平台充满着好奇与兴趣,最近着手了iPhone开发和学习。学习的路线是从objective-c到cococa。方法是看了两本入门的英文书,还有就是学习apple的sdk。对于产品的基本...
  • WCF之诡异通讯超时

    2012-10-16 14:56:00
    1、 在对一个项目的现场实施调试中,应用软件系统在获取服务端数据时报“操作失败”,经日志反馈为:WCF通讯超时! 2、 经过反复测试发现:并不是所有操作都会失败,像登录、增、删、改、查等简单操作能正常运行,...
  • wpf客户端 Windows Presentation Foundation WPF是用于构建Windows应用程序的.NET API。 关于WPF如何使创建视觉上令人印象深刻的应用程序比以往任何时候都容易得多,但是WPF具有其他才能,尽管不那么引人注目,但却...
  • Java调用wcf

    2013-04-17 18:10:00
    最近正在学习wcf,java平台、android、mac都要调用,今天先弄个java调用测试下。 一、创建WCF C# Code namespace YourNamespace { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置...
  • 前后购买了N个WCF的书籍,中国人写书,就怕文字不够数一样,密密麻麻写了一大堆,又难看懂,又浪费时间,其实我们... 3:配置文件如何配置,客户端才能正常引用已发布的服务? 其实这3个问题,是服务器
  • 首先声明:文章中的内容大都来源于网络,做的过程遇到了...gSOAP是一个夸平台的,用于开发Web Service服务端和客户端的工具,在Windows、Linux、MAC OS和UNIX下使用C和C++语言编码,集合了SSL功能。 下载地址:h...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 360
精华内容 144
关键字:

wcf获取客户端mac