2012-06-24 57 views
0

假設我有一個在遠程服務器上偵聽的wcf服務。 客戶端在連接之前能夠知道操作系統將分配哪個端口嗎?如何確定將哪個端口分配給客戶端?

+0

你爲什麼想這樣做? – empi

+0

我將使用'BasicHttpBinding'實現一個雙工通信:當節點A向節點B發送一個請求時,如果節點B接受這個請求,那麼節點A應該保留一個可用的時隙到來自B的即將到來的連接;但A只能知道B的IP地址以便保留該插槽,而不知道該端口。 – enzom83

回答

1

不,默認情況下不...但是你可以使用的ServicePoint的管理請求發送到URI的BindIPEndPointDelegate財產搏鬥控制遠:

var servicePoint=ServicePointManager.FindServicePoint(myServiceUri); 
servicePoint.BindIPEndPointDelegate = (sp, remoteEndPoint, retryCount) => 
    new IPEndPoint(localEndpointDetailsGoHere) 

你需要自己管理端口,在這種情況下。

+0

那麼,我應該指定'IPAddress.Loopback,myLocalPort' ...它是正確的嗎? – enzom83

+0

是的......但是如果端口正在使用或TIME_WAIT,IIRC,那麼再次調用委託,並增加重試次數。 – spender

相關問題