.Net Remoting中Remote Server的Port占用/释放问题
這一問題一般出現在Console application/Windows Service承載Remote Objects時,要求Remote Server指定特定port。IIS在承載Remote Objects并不需要指定特定port,因此一般不會出現SocketException異常信息。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
?
1. 啟動承載Remote Objects的Console application,發現指定的port狀態為:LISTENING。
顯然Remote Server開始監聽該port,可以接受Client端的請求。
?
2. 在關閉承載Remote Objects的Console application后,發現指定的port狀態為:TIME_WAIT。
?
如果現在啟動該Console application,就會拋出如下異常:
An unhandled exception of type 'System.Runtime.Remoting.RemotingException' occurred in mscorlib.dll
?
Additional information: Remoting configuration failed with the exception System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port)
is normally permitted
?
SocketException異常:每一個socket address (protocol/network address/port)只能有一個使用。
?
3. 個人觀點
關于TIME_WAIT狀態,這是windows系統設計的,防止來自舊的連接(old connection)的剩余packets干擾新的連接(new connection)。因此,默認會等待4分鐘,讓那些剩余的packets丟棄掉。
?
因此,不要試圖去解決這一問題。等待4分鐘左右的時間,確認該port確定已釋放,再啟動Remote Server,如Console application/Windows Service等。
?
不同觀點或意見,請發表評論或指出。謝謝。
總結
以上是生活随笔為你收集整理的.Net Remoting中Remote Server的Port占用/释放问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 那些程序员身上共有的属性,这就是他为什么
- 下一篇: 程序员的毕业设计,时隔一年,仍感觉头秃