Czy ktoś może wskazać mi samouczek o najlepszym sposobie otwierania połączenia od klienta do serwera, czytać w pliku binarnym i wysyłać jego zawartość niezawodnie przez połączenie sieciowe? Co więcej, czy istnieje biblioteka open source, która już to robi, do której mogę się odwołać?Jaki jest najlepszy sposób na przesłanie pliku przez sieć przy użyciu C#?
Odpowiedz
Powinieneś sprawdzić serializację binarną i wysłać ją przez gniazdo TCP.
dobre wytłumaczenie na różnych typach serializacji:
http://www.dotnetspider.com/resources/408-XML-serialization-Binary-serialization.aspx
Dobry grunt na TCP Client/Server w C#:
można utworzyć klienta TCP i serwer i wysyłać wiadomości przez TCP. Jest dość trywialny w języku C#.
tutaj jest przykład prostego serwera TCP:
http://www.goldb.org/goldblog/2007/07/27/CSimpleTCPServer.aspx
Jak o użyciu protokołu HTTP lub FTP? Byli do tego stworzeni.
Alex
zależności od tego, gdzie chcesz wysłać plik, może chcesz przyjrzeć WebClient.UploadFileAsync i WebClient.UploadFile.
Nie używałbym HTTP ani FTP, dla pojedynczego pliku jest zbyt dużo narzutów i za dużo do kodu, szczególnie mając prosty serwer TCP prawie już stworzony dla ciebie w C#.
To zależy, co masz na myśli przez sieć - jeśli kopiujesz w sieci lokalnej, możesz po prostu użyć operacji kopiowania plików w System.IO. Jeśli chcesz wysyłać na zdalne serwery, robię to za pomocą usług internetowych. Kompresuję tablice bajtów i wysyłam je i rozpakowuję po stronie zdalnej. Tablica bajtów jest bardzo łatwa do zapisania na dysku za pomocą strumieni.
Wiem, że niektórzy ludzie wolą ciągi bazowe 64 zamiast bajtów []. nie jestem pewien, czy to ma znaczenie.
Gniazda mogą być najlepsza droga, jeśli jesteś po prostu trzeba to zrobić w sieci. Jeśli korzystasz z protokołu TCP, uzyskujesz niezawodność komunikacji, ale wpływ na szybkość. Jeśli potrzebujesz wyższej wydajności, możesz spróbować użyć UDP. Jednak wadą UDP jest to, że dostarczanie pakietów i ich realizacja nie są gwarantowane, więc sam musisz napisać całą tę instalację hydrauliczną.
Jeśli chcesz przesłać pliki przez Internet (programowo i jeśli nie możesz korzystać z FTP), podejście do usługi sieci Web pod numerem MTOM może spełnić Twoje potrzeby.
Jeśli budujesz na systemie Windows Server 2003 R2, Windows Vista lub Windows Server 2008 i wykonujesz wewnętrzne transfery sieciowe, inną opcją jest wykorzystanie nowej funkcji Remote Differential Compression. To nie tylko zapewnia dobrą kompresję pliku, aby zminimalizować ruch w sieci, ale jest również wykorzystywane bezpośrednio przez replikację systemu plików DFS. Downside (jako programista .NET), to technologia COM +.
- 1. Jaki jest najlepszy sposób czytania i analizowania dużego pliku tekstowego przez sieć?
- 2. Jaki jest najlepszy sposób obsługi wersji przy użyciu protokołu JSON?
- 3. Jaki jest najlepszy sposób organizacji wielu projektów przy użyciu git
- 4. Jaki jest najlepszy sposób na zastąpienie pliku remote.origin.url w Git?
- 5. Jaki jest najlepszy sposób przetwarzania zawartości sysfs przy użyciu C/C++?
- 6. Jaki jest najlepszy sposób na naukę CUDA?
- 7. Jaki jest najlepszy sposób na uzyskanie metadanych wideo z pliku MP4 w ASP.Net MVC przy użyciu C#?
- 8. Najlepszy sposób na przesyłanie wideo przez gniazdo TCP w C
- 9. Jaki jest najlepszy sposób pobrania pliku za pomocą urllib3
- 10. Jaki jest najlepszy sposób na wdrożenie "timera"?
- 11. Jaki jest właściwy sposób przesyłania pliku przy użyciu CUploadedFile
- 12. Jaki jest najlepszy sposób na przesłanie każdego elementu w zapytaniu LINQ do Entities do interfejsu?
- 13. Jaki jest najlepszy sposób rekurencyjnego kopiowania zawartości w języku C#?
- 14. Jaki jest najlepszy sposób na interfejs C# i Java?
- 15. Najlepszy sposób na zapisanie pliku w C#
- 16. Jaki jest najlepszy sposób na skopiowanie listy?
- 17. Jaki jest najlepszy sposób na naukę Erlanga?
- 18. Jaki jest najlepszy sposób na seed srand()?
- 19. Jaki jest najlepszy sposób przełączania zmiennej binarnej?
- 20. Jaki jest najprostszy sposób na przesłanie sygnału przez MGT z Xilinx FPGA?
- 21. Jaki jest najlepszy sposób wdrożenia aplikacji Flask przy użyciu Jython na Tomcat?
- 22. Jaki jest najlepszy sposób rejestrowania aktywności użytkowników?
- 23. Jaki jest najlepszy sposób na wyczyszczenie repozytorium Subversion?
- 24. jaki jest najlepszy sposób na parsowanie odpowiedzi xml w AJAX
- 25. Jaki jest najlepszy sposób zapisu do pliku w Ruby?
- 26. najlepszy sposób wstrzykiwania html przy użyciu javascript
- 27. Jaki jest najlepszy sposób na połączenie ścieżki i nazwy pliku w C#/.NET?
- 28. Jaki jest najlepszy sposób obsługi wielu działań?
- 29. Jaki jest najlepszy sposób uczenia się WCF?
- 30. Jaki jest najlepszy sposób na wykrycie obecności SMO?
Drugi link pochodzi z 2001 roku, który był stary nawet wtedy, gdy to pytanie było świeże. To nie jest samouczek i jest bardziej próbką kodu. – YetAnotherRandomUser