2012-06-01 64 views
0

我想通過TCP發送目錄樹結構。樹可能在子目錄中。我不想發送實際的內容,但或多或​​少地發送一個列表在一個字節流中。這樣做的最好方法是什麼?通過tcp轉發目錄樹的最有效方式是什麼? C++

+4

定義「最佳」 .. –

+0

問問你自己 - 什麼是收拾那棵樹成字節數組的最有效方式。之後,它會很容易。 –

+0

我不會同意這一點。如果他使用字節緩衝區進行傳輸,他將不得不擔心字節順序,字節打包等。這是好的,如果他明白,雖然:)它肯定是最有效的方式數據大小明智。 –

回答

0

我認爲你最好的選擇是效率(我假設你的意思是你正在尋找一個解決方案,它需要發送相對於其他解決方案的少量字節),可讀性和可移植性就像JSON

{"dir":"/","children": 
    [{"dir":"bin","children": 
    [{"file":"bash"}, 
     {"file":"csh"}] 
    }, 
    {"dir":"home","children":null}]} 
0

「最佳」有很多解釋取決於情況。如果您可以提供一種格式,使您的客戶(TCP接收器)更容易使用您的數據,那麼這可能是一個好主意。

通常我認爲最好的是最容易理解的方式。例如,XML表示會很好,因爲XML無處不在 - 每個人都知道(或者他們應該)。有一百萬個COTS庫可以處理它,並且它是衆所周知的。

XML本身也可以使實體包含其他實體,並且默認情況下在節點之間具有父/子 - 因此該格式將非常好地反映目錄結構。

xml的缺點是它非常冗長。如果您願意處理額外的複雜性(並且文件大小凸輪在網絡應用程序中非常重要),您可以構建一個平面文件格式。如果您打算使用平面文件表示法,請考慮如何在單個數據庫表(名稱,文件/文件夾,parent_directory等)中構造數據。

1

要發送的樹,只是遞歸執行以下操作:

髮根,然後將其子女。

相關問題