簡體   English   中英

使用C#通過網絡發送文件的最佳方法是什么?

[英]What's the best way to send a file over a network using C#?

任何人都可以向我指出一個關於從客戶端到服務器打開連接的最佳方法的教程,讀入二進制文件並通過網絡連接可靠地發送其內容? 更好的是,是否有一個開源庫,我已經可以參考了這個?

您應該研究二進制序列化並通過TCP套接字發送它。

關於不同類型的序列化的良好解釋:

http://www.dotnetspider.com/resources/408-XML-serialization-Binary-serialization.aspx

C#中TCP客戶端/服務器的良好入門:

http://www.codeproject.com/KB/IP/tcpclientserver.aspx

這取決於您對網絡的意義 - 如果您在本地網絡上進行復制,則可以使用System.IO中的文件復制操作。 如果您想發送到遠程服務器,我使用Web服務。 我壓縮字節數組並在遠程端發送和解壓縮。 字節數組非常容易使用流寫回磁盤。

我知道有些人更喜歡base 64字符串而不是byte []。 不確定是否重要。

我不會使用HTTP或FTP,對於單個文件來說,它的開銷太大而且代碼太多,特別是在C#中幾乎已經為您准備了一個簡單的TCP服務器。

使用HTTP或FTP怎么樣? 他們是為此而做的。

亞歷克斯

根據您將文件發送到的位置,您可能需要查看WebClient.UploadFileAsyncWebClient.UploadFile

如果您只是通過網絡進行套接字,套接字可能是最佳途徑。 如果使用TCP,則可以獲得通信的可靠性,但會對速度產生影響。 如果您需要更高的性能,可以嘗試使用UDP。 但UDP的缺點是數據包傳遞和訂單無法保證,所以你需要自己編寫所有的管道。

如果您需要通過Web本身傳輸文件(以編程方式,如果您不能使用FTP),那么通過MTOM的Web服務方法可能適合您的需求。

如果您構建在Windows Server 2003 R2,Windows Vista或Windows Server 2008之上並進行內部網絡傳輸,則另一種選擇是利用新的遠程差分壓縮功能。 這不僅可以很好地壓縮文件以最小化網絡流量,而且還可以直接由DFS復制使用。 下行(作為.NET開發人員),它是一種COM +技術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM