我們有一臺打開tcp socket的機器監聽文件。如何通過C#中的套接字傳輸100 GB的xml文件?
我可以使用的System.Net.Sockets
我想在一個XML文件(100 Gb)爲讀取數據,並通過插座跨越發送連接到插座在我的C#控制檯應用程序。
最好的方法是什麼?有沒有一個microsoft.net庫可以將它分解成數據包或流式傳輸並傳輸?
我是否必須自己按塊閱讀它?
請建議
我們有一臺打開tcp socket的機器監聽文件。如何通過C#中的套接字傳輸100 GB的xml文件?
我可以使用的System.Net.Sockets
我想在一個XML文件(100 Gb)爲讀取數據,並通過插座跨越發送連接到插座在我的C#控制檯應用程序。
最好的方法是什麼?有沒有一個microsoft.net庫可以將它分解成數據包或流式傳輸並傳輸?
我是否必須自己按塊閱讀它?
請建議
沒有什麼特別的,你應該做的,一旦你打開一個套接字連接,你可以把它只要你想打開。這將是很好的gzip XML文件,傳輸它,然後在服務器上使用它。我希望xml文件的壓縮率至少爲50:1。
編輯: 當您讀取發送文件,使用緩衝區讀取一些行,發送,清空緩衝區,清洗並重復以及不在客戶端上加載文件時,您必須注意,然後開始發送數據套接字連接。
這個任務雖然看起來很容易/可以解決,但它有很多警告。你可以在這裏做的最好的事情是使用某種中間件來做到這一點。中間件的一個很好的例子就是ICE。
http://www.zeroc.com/doc/Ice-3.3.1/manual/Hello.4.5.html
我不知道它是否適合做這份工作一個很好的候選人,但你會發現自己的東西..
如果您對另一端的HTTP服務器(或可把一個人也沒有),那麼你可能想看看Windows Background Intelligent Transfer Services
這將隱藏了很多周圍的重試的複雜性,請求範圍等
上有與C#的COM API交互的文章在MSDN Magazine。
如果100Gb的是困擾你,你可能需要閱讀這個的想法:
套接字是流協議了。 「塊大塊」是什麼意思? –
我不知道。是否必須加載數組中的所有文件內容並調用套接字的發送方法,還是有另一種將數據發送到客戶端的方法? – InfoLearner
如果我將套接字類型設置爲流併發送100 gb數據,它是否會自動爲我流並將其分解爲數據包? – InfoLearner