2014-05-06 66 views
0

如果有人可以提供幫助,我將不勝感激。如何運行來自不同計算機的TCP套接字應用程序

我寫了一個Client/Server Sockets申請。客戶端是Windows Forms C#應用程序,服務器是本地運行的C# console應用程序。客戶端應用程序具有一個包含生成端口字段的登錄表單。

當用戶登錄時,他使用該端口連接到服務器,服務器繼續監聽傳入連接。

當我測試我的應用程序在一臺PC上運行Visual Studio項目的幾個實例時,一切正常。現在,我想在幾臺PC上進行測試,這裏我很困惑。 如果有人能用簡單的詞語解釋如何在兩臺機器上運行我的應用程序,我將不勝感激。

這兩個用戶如何連接到同一臺服務器?它應該放在哪裏?服務器是否應該爲每個用戶組配置一個IP和不同的端口?

此外,我的應用程序使用本地安裝在一臺PC上的SQL Server數據庫。所以應用程序使用連接字符串與該PC名稱。如果有兩臺PC可以在第一臺PC上將第二臺計算機連接到數據庫?

我很抱歉,如果這聽起來很愚蠢:)

非常感謝

+1

您可以讓它在端口X上偵聽,並告訴客戶端在其後的端口y上回調。有關IIS如何工作(或被動FTP)的排序 –

回答

1

所以,如果我是正確的,你想知道以下三件事情?

Q1。如何在多機環境中測試我的軟件?

答:這可能不是一個真正的Stackoverflow問題,但我在這種情況下要做的是在Hyper-V中安裝幾個具有不同操作系統的機器,這些機器都有一個共享文件夾,可以部署我的代碼。當然,對於更多的擴展測試,您需要獲得更多機器並將可執行文件複製到該機器以進行第一階段測試,並且可能會爲第二階段測試編寫一個安裝軟件,但這取決於您實際進行多少測試。 Q2302。如何讓幾個用戶連接到我的服務?

答:我認爲Anthony Horne在評論中有很好的回答 - 告訴你的服務在端口X上偵聽,當客戶端試圖連接在端口Y上打開一個新的通信實例,並要求客戶端回撥到那個港口。據我所知,這是解決這類問題的行業標準。

Q3。我的應用程序使用SQL Server數據庫,我可以讓客戶端遠程連接到它。 A:是的,你可以。請參閱此Stackoverflow question

+0

感謝您的回覆。那麼服務器應該在一臺PC上運行?如果在服務器啓動時定義了端口,我該如何切換端口,還是應該重新啓動它? –

+0

在開始時定義一個偵聽器端口,除了接收傳入的連接請求外,監聽器不會更改端口,而是在不同的端口上啓動NEW服務,告訴客戶端新服務的端口是什麼,然後掛斷。然後客戶可以使用該信息回調新服務。然後,更多的客戶可以打電話給聽衆,每個人在會話期間獲得他們的「自己的服務」。 –

+0

我可以從客戶端Socket的localEndPoint獲取端口,然後將其重新綁定到偵聽器套接字? –

相關問題