0
我需要與遠程計算機建立TCP連接,但在此之前,如果該端口正在被另一個應用程序使用(如果此端口上已有一個連接),則需要檢測該連接。換句話說,我想確保一次只有一個應用程序使用相同的端口。在.NET中如何檢測服務器上的TCP端口是否已打開和/或處於活動狀態?
什麼是在.NET中做到這一點?
我需要與遠程計算機建立TCP連接,但在此之前,如果該端口正在被另一個應用程序使用(如果此端口上已有一個連接),則需要檢測該連接。換句話說,我想確保一次只有一個應用程序使用相同的端口。在.NET中如何檢測服務器上的TCP端口是否已打開和/或處於活動狀態?
什麼是在.NET中做到這一點?
你是什麼意思的另一個應用程序?客戶端可以連接到遠程服務器端口,如果沒有任何監聽端口TcpClient
會拋出異常。因此嘗試連接並捕獲異常。如果在此端口上偵聽的服務器應用程序不會與客戶端使用相同的協議,則當您嘗試發送和讀取數據時將拋出異常,因爲它不符合。所有這些都是例外情況。
另一個應用程序是另一個已經在使用此端口的客戶端(很可能它將在另一臺計算機上運行)。問題是我想只有一個連接到服務器,如果已經有連接,我希望我的應用程序提示用戶。 – Vitalij 2010-10-22 07:48:54
這需要由服務器處理。在TCP級別沒有任何東西阻止多個客戶端連接到偵聽端口。因此,服務器需要跟蹤客戶端,並且如果有多個客戶端放棄連接或向客戶端發送一些信息,通知他另一個客戶端已經連接。所有這些將取決於您使用的協議。 – 2010-10-22 07:52:17
問題是,服務器不會阻止您連接多個客戶端。這不是一個標準的服務器客戶端應用程序,就我的服務器而言是一個泵控制器。而且我不能更改協議和服務器實現。 – Vitalij 2010-10-22 07:58:05