login  Naam:   Wachtwoord: 
Registreer je!
 Forum

C# File Streaming

Offline cyberninjah - 27/07/2009 15:32
Avatar van cyberninjahLid Ik probeer een soort van Update servertje te maken voor een programma

Bij elke keer opstarten controleren of er een nieuwe update is zo ja dan moet hij deze gaan downloaden.

Nu vraag ik me af hoe kan je het beste de files versturen ??

via sockets ( FileStream )
of via webclient


via sockets lukt het me niet ik krijg dan geen meerderen files verzonden & een zip file lukt niet dan komt hij beschadigd aan.

Mischien kan iemand mij hier mee helpen ?

Alvast bedankt

8 antwoorden

Gesponsorde links
Offline Ultimatum - 27/07/2009 17:10
Avatar van Ultimatum PHP expert Als je een ftp server draait kun je ftpwebrequestgebruiken.

Wat je ook kan doen is via NSIS een installer maken. Met deze installer kan je kiezen of je de bestanden van een bepaalde locatie gebruikt of dat ze in het install bestand worden toegevoegd. Als je dus voor de 2de optie kiest hoef je alleen nog maar een exe bestand van je server te downloaden (of een zip als je de exe inpakt).

Ik ben erg tevreden over NSIS maar het is moeilijk te begrijpen als je niets van C snapt omdat de code die je zelf moet schrijven waar door NSIS een exe bestand van gemaakt word is namelijk ook een C bestand. Maar door de tutorials en voorbeelden te bekijken ben ik er ook achter gekomen.

Volgens mij is het C in iedergeval, het is een tijdje geleden dat ik dit programma heb gebruikt.
Offline cyberninjah - 27/07/2009 20:16
Avatar van cyberninjah Lid Hmm dat ftpwebrequest zou een optie kunnen zijn
maar het moet toch ook gewoon kunnen via sockets lijkt me sneller te gaan

dat NSIS vind ik geen oplossing dan kan je netzogoed een .msi bestand maken via Visual Studio met alleen de benodige bestanden die bestanden overschrijft.
Offline rambo - 27/07/2009 20:24
Avatar van rambo HTML beginner Het simpelste is om via HTTP het eea op te halen. Je kunt gewoon gebruik maken van HttpWebRequest en op die manier aan de hand van bijvoorbeeld een filetje op een webserver bepalen of er een nieuwe versie gedownload moet worden.

Wanneer dit het geval is kun je via dezelfde klasse de update downloaden en deze vervolgens ter installatie aan de gebruiker voorleggen.
Offline cyberninjah - 27/07/2009 21:34
Avatar van cyberninjah Lid Dat zou een oplossing wezen via WebClient dat heb ik al keertje eerder gedaan maar dan wil ik uitzoeken hoe ik dan een webservertje maak die dan weer de bestanden kan versturen wil alles in 1 server applicatie bouwen
Offline Stijn - 27/07/2009 22:10
Avatar van Stijn PHP expert Maak gebruik van een UDP verbinding om te controleren of er een update beschikbaar is. De client stuurt zijn versienummer naar jou server en krijgt antwoord terug in de aard van: geen of wel nieuwere versie beschikbaar. Bij wel kan je misschien ook de grote van de update meegeven.

Als er een nieuwere versie beschikbaar is, geef de keuze om te downloaden (ja of nee). Bij ja open je een TCP verbinding om het bestand binnen te halen.

Tip: gebruik threads.
Offline cyberninjah - 27/07/2009 23:05
Avatar van cyberninjah Lid Wat ik momenteel werkent heb ik connect met TCP naar server
vraag de huidige versie nummer op komt die niet overheen met de versie van de Server dan gaat hij een WebClient starten die van een HTTP url zijn bestanden download.
Offline rambo - 28/07/2009 19:26
Avatar van rambo HTML beginner Je zou voor je webserver gewoon een standaardwebserver kunnen gebruiken ( IIS, Apache, etc.) dan hoef je je daar in ieder geval niet druk om te maken. Vervolgens kun je met simpel HTTP je IO doen en op die manier houdt je het serverside simpel.
Offline cyberninjah - 28/07/2009 21:37
Avatar van cyberninjah Lid Ik heb het nu werkent loop alleen tegen 1 probleem op

Met WebClient kan je wel downloaden van een FTP af
Maar DownloadProgressEvent ontvangt dan geen totalresive bytes

Nu staat er op msdn wel een oplossing maar daar kom ik nog niet helemaal uit =)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.272s