如果我使用端口0创建一个TcpChannel,即允许.Net Remoting分配一个可用端口,那么无论如何要确定哪个端口号已被分配?
我知道我可以在创建频道时指定端口号,但我不想这样做,因为我想在同一Citrix服务器上运行多个侦听应用程序实例 - 每个实例都在另一个端口上侦听.
理想情况下,我不希望不得不去保留一堆端口,然后跟踪已分配的端口.我只想让端口自动分配 - 但是我需要知道哪个端口号已被分配.
我不太了解这一点,但是在MSDN上浏览它说明零后使用返回a TcpServerChannel
,并且a TcpServerChannel
有一个GetChannelUri()
方法; 那包括端口号吗?(您可能需要解析,通过new Uri(s).Port
).
再次,完整的猜测工作.如果没有,只要说;-p
由AakashM编辑添加这是正确的方法.以下
var channel = new TcpChannel(0);
可以使用检索包含的服务器通道的动态分配的帖子
var channelData = (ChannelDataStore)channel.ChannelData; var port = new System.Uri(channelData.ChannelUris[0]).Port;
丑陋的演员是必要的,因为该TcpChannel.ChannelData
属性被打字为object
......