2011-06-27 79 views
0

我們有一個程序通過TCP連接到彼此的兩個或多個實例(「節點」)。我們已執行如下:C#TcpClient連接首先連接

// 1. Connect 
TcpClient connection; 

while(true){ 
    try 
    { 
     connection = new TcpClient("localhost", ((Port)Port).Value); 
    } 
    catch(SocketException/* Exception*/) 
    { 
     continue; 
    } 

    break; 
} 

// use the connection 

這種情況並行發生。首先連接的節點被認爲是它連接到的節點的父節點。我們想用這個propery來生成一棵生成樹。 我們如何找出哪個節點首先連接,看到連接的唯一方式是調用TcpClient的構造函數?我們在哪裏可以找到關於連接的更多信息?

請注意,出於測試目的,我們在一臺機器上使用多個端口。它應該通過互聯網在不同的機器之間工作。

回答

1

您無法從客戶端代碼中確定。

只有服務器可以確定。只有服務器可以構建您指定的樹。

如果您編寫或有權修改服務器代碼,則應將其發佈,以便獲得進一步的幫助。

+0

沒有中央服務器,我們有節點連接彼此。我們希望從TCP連接過程中獲得更多信息,特別是;哪個節點首先啓動連接。 – Maarten

+1

啊,但你看到:沒有* central *服務器,但你的實例必須有一個服務器代碼來允許其他實例連接。這就是爲什麼你必須爲每個實例設置不同的端口。根將是找不到服務器的人,依此類推。 –