none
WCF服务端如何获取客户端的IP地址? RRS feed

答案

  • 您可以通过在服务器端以回调的方法在客户端调用Dns.GetHostEntry(...)来拿到客户端的IP.

    2008年1月23日 3:58
    版主
  •  

    你的问题实际上是多线程的问题,你说的办法可以实现,但我觉得你直接使用 ReaderWriterLock 来解决这个问题可能会更好。关于 ReaderWriterLock 的具体使用方法你可以参考VS的帮助文档,网上也有介绍的帖子,可以搜一下。
    2008年3月4日 16:03

全部回复

  • 论坛人气不足,自己顶一下吧

     

    2008年1月18日 11:26
  • 您可以通过在服务器端以回调的方法在客户端调用Dns.GetHostEntry(...)来拿到客户端的IP.

    2008年1月23日 3:58
    版主
  •  

    谢谢付老师的解答,可能我的问题描述的不是很清楚,我想获取的是客户端的公网IP。

    系统的大部分客户端都是在企业局域网内,Dns.GetHostEntry(...)得到的是局域网内的IP,而不是公网的IP。在web应用程序中,通过HttpRequest.UserHostAddress可以轻松获取到客户端的公网IP。在Remoting中就没有这样的属性了,在以前的Remoting项目中,我通过在服务器的信道链中增加一个自定义的ServerSinkProvider,可以获取到客户端的公网IP。不知道在WCF中能不能也和Remoting一样通过类似增加信道链的方法来获取客户端的公网IP?再次谢谢付老师。

    2008年1月24日 16:39
  • 凯歌老师,您好:

    看到您对Remoting比较熟悉,我有一个想法,请您帮助看看对不对:比如,我有一个文件放在服务器,允许各个客户端用户同时打开,但对文件的修改要进行限制:在某个时刻,只允许一个用户对文件进行写操作。我想利用remoting架构,做一个简单的控制程序:当一个客户写这个库时,将远程对象的一个布尔变量,如busy,置为真,直到写完再将该变量置为假。所有客户写该库前,都要循环访问这个变量,如是假,才可以写库,并作上述控制。如是真,表示当前某个客户端用户正在进行写操作,继续访问直至为假。我觉得运用Remoting的Singleton方式应该可以实现上述算法,对吗?

    打扰了,谢谢!

    2008年3月4日 2:51
  •  

    你的问题实际上是多线程的问题,你说的办法可以实现,但我觉得你直接使用 ReaderWriterLock 来解决这个问题可能会更好。关于 ReaderWriterLock 的具体使用方法你可以参考VS的帮助文档,网上也有介绍的帖子,可以搜一下。
    2008年3月4日 16:03