Remoting服务器端建立通道时如何指定公网IP

jxnetinfo 2005-07-29 03:55:54
Remoting服务器端建立通道时如果使用本地IP,那只能是本地客户能够防问,如果要被远程客户端防问时,需要指定一个对外的公网IP,请问如何在建立通道时指定公网IP
...全文
245 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiezic 2005-08-01
  • 打赏
  • 举报
回复
那你把服务器上的端口设置成跟路由的映射端口一样就可以
popcorn 2005-08-01
  • 打赏
  • 举报
回复
ListDictionary channelProperties = new ListDictionary();
channelProperties.Add("port", 1234);
channelProperties.Add("name", "External");
channelProperties.Add("machineName", externalIP);
TcpChannel externalChannel = new TcpChannel(channelProperties,new BinaryClientFormatterSinkProvider(),new BinaryServerFormatterSinkProvider());
ChannelServices.RegisterChannel(externalChannel);
jxnetinfo 2005-08-01
  • 打赏
  • 举报
回复
qiezic(破晓),你好:
取本机地址只取到局域网地址,公司有个对外IP地址,通过端口印射至我的本机,所以我要设置Remoting的临听地址为对外IP,而不是本地IP地址,在网上找到如下解决办法,但运行出错:
[server]
IDictionary tcpProperties = new Hashtable();
tcpProperties["name"] = "tcpBinary";
tcpProperties["port"] = 8888;
tcpProperties["useIpAddress "] = false;
tcpProperties["rejectRemoteRequests"] = false;
//tcpProperties["bindTo"] = localIPAddress; //注:使用IP地址绑定时将无法使用其它IP地址连接
BinaryClientFormatterSinkProvider tcpClientSinkProvider = new BinaryClientFormatterSinkProvider();
BinaryServerFormatterSinkProvider tcpServerSinkProvider = new BinaryServerFormatterSinkProvider();
tcpServerSinkProvider.TypeFilterLevel = TypeFilterLevel.Full;
TcpChannel tcpChannel = new TcpChannel(tcpProperties,tcpClientSinkProvider,tcpServerSinkProvider);

//ChannelDataStore channelData = (ChannelDataStore)channel.ChannelData;
//SetChannelUris(channelData);
ChannelServices.RegisterChannel(tcpChannel);
RemotingConfiguration.RegisterActivatedServiceType(typeof(SQLServer));
//注:SQLServer为服务对象
qiezic 2005-07-30
  • 打赏
  • 举报
回复
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;


TcpChannel chan=new TcpChannel(10000);
ChannelServices.RegisterChannel(chan);
RemotingConfiguration.RegisterWellKnownServiceType(Type.GetType("ServerShareClassLibrary.Server,ServerShare"),"Server",WellKnownObjectMode.Singleton);
qiezic 2005-07-30
  • 打赏
  • 举报
回复
服务器端的IP不就是你服务器端运行在那台机子上的IP吗,至于端口你可以自己指定如下:
TcpChannel chan=new TcpChannel(10000);其中的10000就为服务器端口
jxnetinfo 2005-07-29
  • 打赏
  • 举报
回复
我是想在服务器端指定一个公网IP,你给出来的是客户端代码吧
qiezic 2005-07-29
  • 打赏
  • 举报
回复
ServerObject=(Server)Activator.GetObject(typeof(Server),"tcp://"+config.ServerIp()+":10000/Server");
直接把本地IP改为公网IP就可以了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧