» »

VB6 in mrežna aplikacija

VB6 in mrežna aplikacija

robinson33 ::

Pozdravljeni poznavalci, prosil bi vas za nasvet.

Rad bi naredil aplikacijo v VB6, ki bo komunicirala sama s sabo, ko bo nameščena na dveh oddaljenih računalnikih, priključenih na internet.

Kako naj se tega lotim, dajte me prosim malo usmeriti.

Konkretno: na enem računalniku bom kliknil gumb in sprožil štetje. Rad bi, da se istočasno sproži štetje tudi na oddaljenem računalniku. Ali bo mogoče zagotoviti odzivnost v času 0.01s, če pa to ne, pa vsaj 0.1s?

Kot nadaljevanje projekta pa bi morda prišlo v poštev še prenašanje slike prek spletne kamere, ki bi jo prikazoval znotraj aplikacije. Kako pa bo s tem?

dolenc ::

Odzivnost bo bolj povezana z samo povezavo kot z aplikacijo. 10ms vprašanje če boš dosegel, z dobro linijo tudi, 0.1s pa ziher dobiš.

Kako se lotit... "vb6 tcp/ip server client tutorial"
Razne igrce tako delujejo, o tem je zelo velik na netu.

kako je z prenosom slike pa ne vem. Se je pa ziher že kdo lotil. Pa če začenjaš, raje uporabi vb.net, ker boš hitreje našel materjal.

A boš uporabljal aplikacijo da boš štopal kako hitro pritečeš od enega računalnika do drugega? :D

robinson33 ::

Tudi to bi se dalo, ja. :)

Hvala, si bom vse pogledal.

Aplikacijo imam že narejeno v VB6, rad pa bi dodal še dodatno funkcionalnost, ki je pogojena z oddaljeno povezavo. Pa tudi drugače sem programerski samouk in mi prehod na net predstavlja kar podvig. ;)

robinson33 ::

Torej, včeraj sem vzpostavil povezavo in napravil 'chat' tako po UDP kot po TCP varianti, sicer med računalnikoma, povezanima na isti router. Za vzpostavitev povezave sem uporabil 'computer name'.

Kaj pa, ko bom povezoval dva zares oddaljena računalnika, ali se takrat prav tako vpiše njuno ime in se potem kar najdeta, ali pa se vpiše IP naslov...?

Opis aplikacije: na enem računalniku bom kliknil 'Start', kar bo hkrati sprožilo štetje časa na vseh povezanih računalnikih. Ko bo potem postopoma na njih prihajalo do 'Stop' dogodkov, se bo štetje ustavljalo, rezultat pa sporočal na vse preostale povezane računalnike.

Število računalnikov ne bo prav veliko, začel bom z dvema, več kot 10 verjetno ne bo nikoli.

Ali je za opisano bolj primerna UDP ali TCP metoda? Ločljivost štetja bo 0.1s, verjetno z 0.01 ne bi prišel skozi z zadosti zanesljivimi rezultati.

Malo me razsvetlite, prosim, vsak napotek bo dobrodošel.

dolenc ::

UDP bo hitrej, TCP pa bl ziher. Udp pošilja paketke, če pride pride če ne pa ne, je pa vmes manj dela, tcp pa pošilja verige, pridet morajo komplet, če ne, zahteva tisti del, ki manjka preden se cel sestavi.(če se prav spomnim)

Samo s tem, da ti prožiš samo štetje, vmes pa ne delaš nekih hudih prenosov bi jaz rekel udp.

Za povezovanje pa ne vem, jaz bi uporabil ip, ker ne vem kako gre s izmenom kišt ko si enkrat izven lokalne mreže :D

robinson33 ::

Aha. Mora pa delati zanesljivo, tako da bi pri UDP zahteval potrditev prejema, sicer bi zahtevo poslal ponovno. Vse to se mora odviti znotraj nekaj 10ms.

Znotraj lokalnega omrežja imajo vsi računalniki isti IP, mar ne? In zunanji računalnik, ki se hoče povezati zraven, se bo na tistega, ki ga je pripravljen poslušati, ali gre to tako?

tony1 ::

Ljudje si malo narobe predstavljajo to zanesljivost v internetu danes (kaj šele po lokalni mreži). TCP se je pisal še v času dimnih signalov...

Skratka, za tvoje potrebe bo UDP čez glavo dovolj (lahko pa npr. pošiljaš po dva streama hkrati)...

dolenc ::

Znotraj mreže ima vsak svoj ip.

Če ima router recimo 192.168.1.xx imajo potem namesto tistega xx računalniki cifre, vsak svojo.

Ko gredo pa vn jim router nadomesti njihov lokalni naslov z zunanjim, s tem da si zapomne od koga je kaj prišlo. In če bi na zunaj gledal bi imela kišta ip recimo 89.123.321.11, kljub temu da imaš ubistvu lokalni ip 192...

Zunanji naslov pa ima več računalnikov enako.

Če se prav spomnim gre to nekako tako :)

Ko router dobi vhodni paket, ga pošlje vsem in sprašuje "Alo prjatu, a je zate?" In dokler ne najde tistega ki reče "Jebenti pa je res zame" pošilje vsem. Sproti si sestavlja arp tabelo v katero si zapomne kje je kdo in za koga je kaj. Potem pa dobiva samo še naslovnik.

Upam da sem koker tolk razložu, če sem pa kje falil naj me pa kdo drug popravi :)

l0g1t3ch ::

Tudi znotraj lokalnega omrežja ima vsak računalnik svoj IP.
Samo znotraj lokalnega omrežja ima maš lokalne IP-je, ala 192.168.1.X, medtem ko na ven se kažeš z zunanjim IP-jem, ki ga dodeli ISP.

Preberi si prvo malo kako deluje mreža in to ;)
Pa uporabljaj TCP povezavo, za tisti mali prdec podatkov, ki jih boš ti imel ne kompliciraj z UDP-jem.

Pa še glede 10ms okna. Pozabi nanj. Kar pojdi na stran recimo speedtest, pa boš videl kaki ping imaš že od sebe pa doISP-ja.

robinson33 ::

Test mi je pokazal 14ms. No, torej se bom odločil za 100ms ločljivost štetja in bom tam nekje.

Potrebno se bo malo bolj izobraziti, se strinjam.

Kaj pa sledeča težava? Zdaj, ko sem vzpostavil povezavo med dvema računalnikoma znotraj lokalnega omrežja, bi se rad razširil tudi navzven, da se naučim sprogramirati vse potrebne detajle. Nastaja pa logistični problem, saj nimam na razpolago dveh neodvisnih internet priključkov. Ali se da to kako simulirati, kot da se en računalnik nahaja zunaj? Kako to rešujete drugi?

dolenc ::

Prijatelj ali nekdo ki ti je pripravljen od zunaj testirat

robinson33 ::

Še eno vprašanje: ali je povezavo med tremi ali več računalniki enako lahko narediti pri TCP in UDP ali pa je v tem primeru bolj priporočljiv eden od teh dveh načinov?

robinson33 ::

Pa še tole sem se spomnil. Ali je TCP bolj občutljiv na motnje v omrežju? Mislim v smislu, da bi se ob pojavu motnje TCP povezava prekinila, kar pomeni tudi izpad aplikacije, medtem ko naj bi UDP bila bolj robustna in kratkotrajna prekinitev ali motnja nanjo ne bi vplivala?

Je kaj na tem?

Looooooka ::

vmware, virtual pc in podobne zadeve pa lahko na svoji masini simuliras mrezo...
udp nima nekega recoveryja...tcp ga ma.v tcpju si paketi sledijo...v udpju ni te garancije(se prav lahko en paket dejansko pride pred drugim).

robinson33 ::

Nekaj časa me ni bilo tule. Medtem sem genialno rešil svoje dileme in aplikacijo že skoraj končal. :)

Uporabil sem TCP povezavo, in sicer tako, kot sem našel opisano v tutorialu: ob inicializaciji server čaka na prijavo klientov in za vsakega odpre nov Winsock, tako da je odprtih toliko povezav, kolikor je prijavljenih klientov.

Za testiranje sem pognal aplikacijo kot server na enem računalniku, na drugem pa pognal več kopij istega programa kot kliente, pa gre (tudi to je bilo v tutorialu).

Sem kar malo ponosen, da sem osvojil nekaj novega. 8-)

Ne vem edinole še tega, kaj se bo dogajalo v praksi, ko naj bi bili računalniki lahko res daleč stran en od drugega - po več državah. Verjetno da bo delalo...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
!

[Router] Kako forwardirat oz. odpret porte (strani: 1 2 3 4 5 6 7 8 )

Oddelek: Omrežja in internet
372341503 (41959) ignats
»

razlika med OSI in TCP/P modeloma

Oddelek: Omrežja in internet
135072 (959) enxtip
»

Povezava dveh lokalnih omrežij

Oddelek: Omrežja in internet
171973 (1453) Aleks Nafi
»

Lokalni in Globalni IP

Oddelek: Pomoč in nasveti
241908 (1486) KoMar-
»

Čudno obnašanje uTorrenta in odpiranje portov ( slab prenos )

Oddelek: Programska oprema
82770 (2598) blackbfm

Več podobnih tem