Gå til innhold

Anbefalte innlegg

Skrevet (endret)

hei! :)

 

Jeg og en kamerat driver å programerer et program i winsock

til å sende filer over nettet mellom to klienter. Har ærlig talt ikke peiling på hvordan vi skal klare å

skrive det som peer to peer, og hvordan alle p2p programmene klarer å overføre uten å måtte forwarde ruteren?!

 

Har vanskelig for å finne noe hjelp i å skrive p2p i ren winsock api.

Finner bare mye om c# og vb og andre ferdiglagde klasser.

 

Noen som har noen erfaringer eller ressurser om p2p programering i winsock? :)

Endret av bigbull
Videoannonse
Annonse
Skrevet

Først og fremst må du lære deg å bruke Winsock, flere god eksempler hos Codeproject.com, som f.eks denne: http://www.codeproject.com/KB/IP/winsockintro02.aspx

 

Når du skriver p2p, regner jeg med at du tenker på teknikker lignende gnutellanettverket eller bittorrent, right. Ikke bare kun 1 til 1 slik eksempelet over viser?

 

Hvis det er p2p du er ute etter må du forstå basisen i måten og gjøre det på, sjekk denne: http://bildr.no/view/199668

 

Minst 1 av pcene ha en firewallen åpen for å kunne koble til for å være en del av "skyen". Deretter kan andre klienter bruke den "åpne" klienten som en forwarder til andre klienter som den kjenner til.

Ofte finnes det egne register-servere slik at prosessen med å finner andre peers går fortere +++

 

Men hvordan klarer noen programmer alltid å koble deg sammen? Vel du må ha noe i mellom, for å alltid kunne gjøre tilkoblingen. F.eks Windows Messenger bruker en server som du kobler til for deretter og linke klienter sammen. Firewaller blokkerer som oftes kun inn-trafikk, derfor fungerer det som oftest når 2 maskiner kobler ut til en server.

 

Det finnes også mulighet til å bruke UPNP, hvis ruteren støtter det og brukeren ikke har deaktivert funksjonen. UPNP kan benyttes til å forwarde porter programstyrt, dermed er man "sikker" på at brannmuren er åpen. UPNP er ikke noe sikkert kort, derfor må du velge en "mann-in-the-midle" løsning for å være 99% sikker.

 

Anbefaler å begynne med et enkelt filoverføringsprogram mellom 2 maskiner også kan du bygge deg ut derfra. En god start for det, er dette eksempelet: http://www.codeproject.com/KB/cpp/WSFileTransfer.aspx

Skrevet

Takker for gode svar!

 

Har vært innom alle de artiklene på codeproject og har skrevet et program som sendte filer Server/Klient over tcp tidligere :)

Så mener jeg har grunnleggende oversikt over grunn funksjonene i winsock.

 

Programmet vi ser for oss skal bare være et enkelt lite program for folk som ønsker å sende filer over internett til en annen pc.

Målet er at det skal være enkelt å raskt i bruk uten noe dill dall og da burde man helst unngå det med forwarding.

 

Men da må vi altså sette opp en slags master server som kjører programmet med åpne porter,

og alle klienter kobles opp mot masteren og så får de informasjon fra masteren om andre klienter og så kobles de til hverandre gjennom hoved serveren? Så all overføring foregår gjennom den? :)

 

Det med UPNP er jeg litt usikker på

Skrevet

En masterserver er nok den best løsningen ja. Har aldri programmert akkurat en slik løsning selv, men jeg ville tro at man må "kjøre" accept på koblingene og streame dem sammen. Men da må du ha en god båndbredde på serveren.

 

Tror det finnes teknikker som gjør at serveren kan koble sammen 2 clienter slik at trafikken går fri fra serveren. Hvis du finner en løsning på det er det sikkert intressant å presentere det på codeproject imao ;)

Skrevet (endret)

Hørtes kanskje litt overlegent ut det med codeproject!

er bare 16 :)

 

Det med å koble sammen 2 clienter tror jeg blir for vanskelig for oss,

Tror vi satser på å hoste en "masterserver" og se hva som kreves av båndbredde

 

Takk for hjelpa Largie!

Endret av bigbull
Skrevet (endret)

UPNP fungerer veldig greit og har søke funksjoner (via apier) så du kan automagisk finne rutere (eller en upnp styrt lampe :) ) som er i nettverket. Når du har funnet en dings så kan du finne funksjoner som dingsen har og eventuelt abonere på eventer som den har.

Endret av Giddion
Skrevet

Du må ha UPnP aktivert på PC-en og ruteren. Det finnes flere fine eksempler på bruk av den, best jeg har brukt er denne: http://www.codeproject.com/KB/IP/PortForward.aspx

 

At UPnP kan åpner porter osv er jo i mine øyne "galskap" siden det undergraver hele firewall konseptet. Det har aldri blitt aktivert i mitt hus, for å si det sånn ;)

 

En server-klient løsning er absolutt "enkelt" å lage. Det har jeg laget selv vha MFC rammeverket og CASyncSocket tok ikke lange tida, lykke til.

Skrevet

For å gå litt off topic. Nå var det jo aldri slik at NAT skulle overta for firewall's, men at Network address translation kom som en bi-effekt av at man slapp opp for ip'er. At alt skal bli enkelt går alltid på bekostning av sikkerhet, det er for så vidt transitivt. All sikkerhet går også på bekostning av enkelhet.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...