Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse
  • 2 uker senere...

Hei,

 

Prosjekt: SSFT - Simple Socket File Transfer

SSFT.zip

 

Dette er et lite prosjekt jeg startet på for en halvt års tid siden, når jeg irriterte meg over de litt ustabile og heller kranglete fildelingsmulighetene i Windows. Så derfor lagde jeg et lite program som kan overføre filer over et nettverk ved bruk av tcp sockets.

 

Jeg tok opp prosjektet for noen dager siden og la til den funksjonaliteten som manglet for å kunne kalle det et fullverdig filoverføringsprogram i noen grad.

 

Prosjektet består av to deler: en server som tjener en fil til flere klienter, og en klient som kan koble seg til denne serveren og laste ned filen. Man kan velge eget portnummer serveren skal lytte til (standard 43000) og hvilken IP/hostname og portnummer klienten skal koble seg til. Dette tillater filoverføring over internett, men husk å åpne helt ut til internett med brannmur og portforwarding i router, etc. ;)

 

Siden programmet bruker direktetilkoblinger mellom maskiner, vil filoverføringen gå så raskt som nettet ditt tillater.

 

Jeg vet ikke hva som trengs for å kjøre det, men sannsynligvis .NET Framework 3.5 og Visual Studio .NET Redist.

 

Kom gjerne med forslag til hva som kan forbedres. Jeg vet det nok vil være en del, f eks at man må begynne helt på nytt om tcptilkoblingen brytes. :p Skulle også gjerne forbedret gui-et litt, bl a lagt til høyreklikking på aktive tilkoblinger og valgt "Delete" eller noe i den duren--foreløpig må man nøye seg med å velge tilkoblingene og trykke delete. :D

 

Ellers er det et ganske praktisk program, om jeg må få lov til å si det selv. Har brukt det en del blandt venner osv til å overføre filer raskt med.

 

Edit: Oppdatert SSFT.zip.

Endret av LostOblivion
Lenke til kommentar

Som regel er port 0 til 2000 reservert for OS-et. Så alt over 2000 burde være greit. Du kan jo prøve med port 80 og se hva slags melding du får i serverloggen. :)

 

Edit: Prøvde nettopp med port 80, men denne var allerede i bruk. Prøvde 90, og det funka faktisk, så er kanskje bare i Linux 0 til 2000 er reservert... :)

Endret av LostOblivion
Lenke til kommentar

Vel, var vel egentlig ute etter om det lot seg gjøre å kjøre dette over samme protokollen som nettleseren bruker, men da er det vel mer snakk om webservices.

 

Reservert sier du? Hvorfor det? Kan ikke noen grunn til at hverken Windows eller Linux skulle reservere noe som helst. Hvis jeg ønsker å lage en mail server så må jeg vel få lov til det og da er det jo snakk om port 25.

Lenke til kommentar

Angående å bruke samme port som nettleseren bruker, så er det vel ikke veldig vesentlig i dette tilfellet, med mindre du har en webtjener installert på lokalmaskinen din som du har åpnet ut til internett for.

 

Det virker som du misforstår litt hvordan dette fungerer. Les litt om tcp/ip, så skjønner du hva jeg mener. :)

 

Port 80 er jo bare en standardport som har blitt vanlig å bruke for webtjenere som din nettleser bruker når den kobler seg til en vert på internett. Din nettleser har i utgangspunktet ingen webtjener som lytter på port 80, og derfor kan man ikke gå ut ifra at port 80 alltid er åpen ut mot internett, som du hinter til. Med mindre, som sagt, du har en webtjener på din lokalmaskin og du har åpnet for port 80 ut mot internett. Håper det la litt lys over saken. :)

Lenke til kommentar

Er nok ikke mangel på IP kunnskap som gjelder her ;-)

 

Det jeg snakker om er å ha filoverføringen over HTTP slik at man ikke har brannmur problematikk i det hele tatt. Poenget er å kunne sette opp en backup løsning som rett og slett vandrer fritt over port 80.

 

Grunnen til at jeg "blandet" meg inn i denne tråden var rett og slett fordi jeg vurderer å lage en slik løsning for en av kundene mine. De har en server i dag med både SQL data og andre flatfil områder som skal tas backup av. Jeg ser for meg en synkronisering av denne serveren mot en av mine egne servere slik at det hver natt kan synkroniseres. Og når dette er oppe og går så ser jeg for meg å tilby løsningen til flere kunder. Hadde vært så glitrende om dette kunne installeres sømløst uten noe surr på brannmur. Men som sagt, dette handler nok mer om en webservice(soap) løsning en "ftp" over en annen port

Lenke til kommentar

Oja, da misforstod jeg nok hva du mente. :) Men poenget med enkelheten i applikasjonen min er jo at man bare har to maskiner som er koblet til hverandre for kjapt å overføre filer, og da må jo en av dem alltid lytte til den gitte porten, og det er jo ikke sikkert at denne er åpen?

 

Jeg tror jeg ikke helt skjønner hva du mener enda...at man har en tredje applikasjon som både filsender og filmottaker kobler seg til som benytter seg av HTTP?

Lenke til kommentar
Jeg vil mene løsningen er bedre slik den er nå. Men hvordan funker dette hvis flere klienter laster ned samtidig?

Serveren støtter flere tilkoblinger samtidig, med en tråd for hver tilkobling. IP til klient og info om filoverføringen blir vist i connections-listen.

 

Jeg ser fordelen med HttpListener ja, god ide! :D

 

Edit: PM meg om kildekoden for SSFT er ønsket.

Endret av LostOblivion
Lenke til kommentar
  • 3 måneder senere...
  • 2 uker senere...
  • 3 uker senere...

Da har jeg laget mitt første brukbare C# prosjekt!

(Alt annet har bare vært tull for å lære. Dette var egentlig også for å lære, men jeg endte opp med et brukbart resultat jeg, forhåpentligvis, kan bruke igjen i andre applikasjoner.)

 

Det ble en "Wizard Template"! Det er foreløpig bare en visuell del med litt funksjonalitet. Det er en TabControl-basert "wizard" med Previous-, Next-, Finish- og Cancel-knapper. Det er hovedsaklig bare funksjonaliteten på disse knappene jeg har brukt "programmeringstid" på, det vil si:

- Å aktivere/deaktivere Previous-knappen i forhold til hvilken side/tab man er på.

- Endre Next-knappen til en Finish-knapp på siste side.

- Cancel-knapp og tilhørende Message/Dialog Box med en forespørsel om å avslutte.

 

Det er et veldig lite prosjekt(jeg lagde det på 1 kveld, noe som vil si veldig liten innsats siden jeg er ny i C#), med rom for utvikling og dere er velkommen til å komme med tips og veiledning til forbedringer.

 

Selv føler jeg at dette er et perfekt utgangspunkt til for eksempel en spørreundersøkelse.

 

EDIT: Tror det er lettest å bare legge zip-fila i "Templates" mappa(i VS 2010)

WizardTemplate.zip

Endret av Bluebeard
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...