Remoting 获取客户端IP地址.docVIP

  • 17
  • 0
  • 约 16页
  • 2016-11-21 发布于河南
  • 举报
Remoting 获取客户端IP地址

Remoting 获取客户端IP地址 网络文章一大抄真是不假,为了解决在Remoting中获取客户端IP的问题,Google,Baidu了许多文章, 都一个样,真是气死。不过好歹调试通了,把代码贡献出来: 采用Sink方式,至于这个Sink到底是什么原理,还没搞明白,我想大概是和Filter一类的管道类似吧,不管怎么说, 先抄对了能用再说。 以下这段代码,在Remoting服务器端,不用做修改直接照抄,为了简单,把2个类都放一个Sink.cs里面了。 ///////////////////////////////////////////////////////////////////////////////// //Sink.cs Begin using System; using System.Collections.Generic; using System.Text; using System.Runtime.Remoting.Channels; using System.Collections; using System.IO; using System.Runtime.Remoting.Messaging; using System.Net; namespace IServer { public class ClientIPServerSinkProvider : IServerChannelSinkProvider { private IServerChannelSinkProvider next = null; public ClientIPServerSinkProvider() { } public ClientIPServerSinkProvider(IDictionary properties, ICollection providerData) { } public void GetChannelData(IChannelDataStore channelData) { } public IServerChannelSink CreateSink(IChannelReceiver channel) { IServerChannelSink nextSink = null; if (next != null) { nextSink = next.CreateSink(channel); } return new ClientIPServerSink(nextSink); } public IServerChannelSinkProvider Next { get { return next; } set { next = value; } } } public class ClientIPServerSink : BaseChannelObjectWithProperties, IServerChannelSink, IChannelSinkBase { private IServerChannelSink _next; public ClientIPServerSink(IServerChannelSink next) { _next = next; } public void AsyncProcessResponse(IServerResponseChannelSinkStack sinkStack, Object state, IMessage msg, ITransportHeaders headers, Stream stream) { } public Stream GetResponseStream(IServerResponseChannelSinkStack sinkStack, Object state, IMessage msg, ITransportHeaders headers)

文档评论(0)

1亿VIP精品文档

相关文档