2014-02-23 71 views
1

首先,我想要玩這個作爲一個學習鍛鍊的雙向溝通​​,我在其他技術,如WCF :)通過TCP客戶

我試圖做的是不感興趣有2個應用程序,每個應用程序運行在不同的機器上,可以相互通話。

我有一個例子,其中一個應用程序是服務器,另一個應用程序是客戶端。這可以通過在服務器應用程序中使用TcpListener來實現,該服務器應用程序接受TCPClient,然後繼續讀取while循環,以等待來自客戶端應用程序中運行的TCPClient的數據。

這允許我通過讀取/寫入任何應用程序中的TCPClients流來回發送數據。

雖然我可以讀寫兩種方式,但它只有客戶端可以實例化事件,因爲它是唯一一個等待發生事件的服務器。我想擴展它,以便客戶端應用程序也可以接收從服務器實例化的消息。

所以我正確的想我需要在每個應用程序中的2個TcpClient?一個用於發送數據,另一個始終等待數據?

+0

對......你會使用相同的** **應用在這兩個地方,並使其有一個服務器和客戶端。 –

+0

TCP是一種雙向協議,這意味着您可以在連接的套接字上發送和接收數據。但是,要連接兩個端點,將充當服務器的端點必須偵聽傳入的連接。 –

回答

1

正如兩位評論者所說,在這種情況下,您通常在雙方都具有相同的應用程序,可以同時作爲客戶端和服務器。由於初始連接通常是響應用戶交互(或其他外部事件)而啓動的,所以正常模式是讓所有應用程序都以「偵聽」模式啓動(作爲服務器)。一旦在一個應用程序上請求連接,它就會停止監聽並嘗試連接到其他應用程序。

如果應用程序是嘗試在連接啓動時,最簡單的方法是,按上述(全部在服務器模式),以及一個隨機的時間延遲交換到的客戶端模式之前。如果連接失敗,則退回到服務器模式並再次延遲。