[ vuchko.vuchko @ 23.03.2010. 14:20 ] @
Pokusavam povezati dva racunara preko interneta pomocu winsock-a...

Na strani servera sam stavio jednostavan kod:

Code:
Private Sub Form_Load()

    Winsock1.Close
    Winsock1.LocalPort = Text1.Text
    Winsock1.Listen

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim str As String
Winsock1.GetData str
List1.AddItem str

End Sub


A na strani klijenta sam stavio kod :


Code:
Private Sub Command1_Click()

    Winsock1.Close 'ovo upises da mozes vise puta pokusati da se konektujes ako ne uspe a da n izbacuje gresku
    Winsock1.RemoteHost = Text3.Text    
    Winsock1.RemotePort = Text1.Text 
    Winsock1.Connect

End Sub

Private Sub Command2_Click()

 Winsock1.SendData Text2.Text
 List1.AddItem Text2.Text

End Sub


Za port sam stavio 168.

Kada pokusam da radim ovo na svom racunaru, preko lokalne IP , radi tj. prikazuje mi na strani servera sta je klijent poslao.

A kada na strani klijenta (na drugom racunaru), unesem moju javnu IP adresu , i kliknem konekt ne javlja mi nikakvu gresku, ali kada upisem nesto u text box i pokusam to poslati serveru izbaci mi run time error 40006, gdje je problem??
[ Marko_L @ 23.03.2010. 15:35 ] @
U tvom slučaju, najverovatnije se radi o pokušaju slanja dok se još nisi okačio na server. Pokušaj da posle linije Winsock1.Connect dodaš petlju koja će da se vrti sve dok se ne povežeš na server
Code:
Winsock1.Connect

Do Until Winsock1.State =  sckConnected
   DoEvents
Loop

Msgbox "Connected"

To će ti dati uvid u to kada si se ukonektovao i da li si se ukonektovao, pa tek kad dobiješ poruku, onda šalješ. Ovo ti je čisto za proveru, a ti posle možeš to da modifikuješ, recimo tako što ćeš da dodaš TimeOut da ti ne ostaje aplikacija zaglavljena u petlji u slučaju da ne može da se poveže na server, a možeš i umesto Msgbox-a da staviš Enabled svojstvo dugmeta za slanje na True, a po defaultu da bude False, pa tako kad vidiš da je dugme omogućeno, znaš da je ukonektovan, itd. A najbolje bi bilo da imaš i neki log gde ćeš da beležiš connection state, pa ćeš znati tačno koje je sve procese winsock prošao. No, otom potom.
[ vuchko.vuchko @ 23.03.2010. 16:06 ] @
E bas je tu problem..... Nikako da mi izbaci poruku da je konektovan na server...

Sta bi mogao biti razlog.... da li je ovaj moj server dobro napravljen za spajanje preko neta...posto kada radim na mom racunaru on se konektuje na server i salje poruke normalno , a kada pokusavam sa druge lokacije...nikako da izbaci obavjestenje

Da li su mozda portovi problem? Kako bi mogao to ispitati?

[Ovu poruku je menjao vuchko.vuchko dana 24.03.2010. u 12:43 GMT+1]
[ vuchko.vuchko @ 24.03.2010. 14:26 ] @
Da li bi mogao neko da pomogne...vezano za ovu temu?
[ vuchko.vuchko @ 01.04.2010. 23:16 ] @
Jos uvjekl nisam nasao rjesenje niti identifikovao problem :-(....
[ Blue82 @ 02.04.2010. 09:55 ] @
Najverovatnije ti je code ispravan ali moras uzeti u obzir jos jednu stvar. Mozda ti firewall blokira pristup kada pokusavas da se konektujes sa spoljne adrese ili pak imas kuci ruter, a ako imas ruter moras mu otvoriti taj port preko koga hoces da pristupis serveru.
[ vuchko.vuchko @ 05.04.2010. 19:52 ] @
Izgleda da je do toga greska, istrazivao sam . Da li postoji neki nacin da preskocim to otvaranje jednog porta, npr. da otvorim sve portove, jer je to kod mene nemoguce otvoriti port (imam adsl modem -> SmartAX MT882? )
[ Blue82 @ 05.04.2010. 19:57 ] @
Ako imas modem onda ne bi trebalo da imas firewall u okviru njega, nego pogledaj programcice koje imas. Ili imas posebno firewall ili ga imas u okviru nekog programa kao npr sto neki antivirusni programi imaju tu opciju integrisanu u njemu. A postoji i windows-ov firewall. Programski ga ne mozes preskociti jer kad bi to tako lako moglo onda njegova svrha ne bi bila opravdana, on je tu da te stiti cak i od tvog programa ako ne znas da ga podesis hehe
[ vuchko.vuchko @ 12.04.2010. 16:10 ] @
Ovako prorteklih nekoliko dana krampam po mom modemu da mu prosledim port-ove... I nikako to da uspijem uraditi da mi sa nekoog web-a za testiranje bude vidljiv ijedan otvoreni port...ali sto je najcudnije programi kao npr. torrent rade potpuno normalno na svojim portovima za koje takodje pise da su zatvoreni... E sad ja Vas pitam u cemu moze biti problem, da li ovaj moj kod nevalja ili ima neko neku dobru ideju kako da izvedem da se neko nakaci na moj server....

Svaka ideja je dobro dosla....
[ Yoba @ 12.04.2010. 16:40 ] @
pazi, kapiram da mozes naci na netu gomilu tutorijala i primera na tu temu.


tako da bih ja nasao neki od njih i uopredio, video njihov pristup i isto primenio.


tako bi barem mogao da razlucis da li je do codea (ako njihov radi a tvoj ne) ili je do tvog kompa xp/mode/...(ako ni jedan njihov ne radi).



inace, ako si ti iza rutera to _ume_ da bude problem, ja sam imao problema dok sam uspeo da poteram neke programe da rade (tada sam imao SP1).
posle setovanja kojekvavih i SP2 sve je to manje-vise proradilo.
tako da, ako si iza rutera, probaj da se nakacis direktno na net pa vidi da li radi.
[ vuchko.vuchko @ 12.04.2010. 18:03 ] @
Hvala na odgovoru...
pokusavao sam ja sa drugim aplikacijama i one rade u lokalu ali preko neta nece da rade...

Ovako, dao sam kod moga programa u prvom postu...Kada testiram program na mom racunaru tj ip 192.168.1.2 uspostavi se veza izmedju servera i klijenta i oni nesmetano razmjenjuju podatke... Sto bi trebalo da znaci da je program uredu, ispravite me ako grijesim.

E sad ja pokusavam ovako, najprije "prosledim portove na modemu smart MT882" , zatim pokrenem server, i onda sa drugog racunara pokusam se konektovati koristeci pri tome moj javni ip, na racunaru gdje je pokrenut server i ne moze da se uspostavi veza...
Sve upucuje da portovi nisu najsrecnije otvoreni ali kako to da istestiram ... Kako si ti Yoba proteravao programe kroz ruter, jel ima neka ideja..
[ Yoba @ 12.04.2010. 18:57 ] @
upravo to sto si rekao ti i govoi ovo o cemu ja pricham, tebi je problem da si iza rutera i da ti to odbija spoljnu connekciju.


dakle, ako se dobro secam, prvo sto sam bio drndao na ruteru je port forwarding. dakle tvoj server slusa na x portu i ceka konekciju spolja, potrebno je da na ruteru namestis da ti forwarduje konekciju x port privatna adresa <-> x port javna adresa.


to je meni jedno vreme radilo, onda se nesto sjbealo pa sam probao sa upnp. to ti je nesto kao dinamicko/automatsko forwardovanje.


e onda se i to miseteriozno sje*alo pa sam na kraju moju ip adresu stavio dmz <-demilitarizovanu zonu.



sve u svemu, imao sam silne zezancije kada sam kupio ruter (TP-LINK TL-R460) da poteram DC++ (ovo gore sto sam pisao terao sam zbog njega).
spec, sto je tu bilo tripova da radi TCP a ne radi UDP ili obrnuto, a kod DC++ je bio fazon da transfer ide preko TCP a search preko UDP --drugim rechima, mozes da odes kod x lika, pogledas share i da skidas, ali kada ukucas search ne dobijes nista (jer je bio blokiran UDP).



lm, kada sam staivo SP2 i popalio sve te opcije to je nekako proradilo (mada, preporuka na netu koju sam ja chitao je da izabres jednu od ovih sema, a ne sve, kao da se ne bi klale mejdusobno).



iste sam muke preziveo sa sherom u lokalu, nekada radi, nekada neradi, neka na pola copya izbaci error...totalno 3puozno i iskreno se nadam da je bolje odradjen sve to na sedmici.



//takodje, treba napomnuti da prvo sto sam uradio tada je deinstall ZoneAlarm-a
[ vuchko.vuchko @ 14.04.2010. 20:09 ] @
USPIO SAM... Uspostavio sam komunikaciju izmedju dva racunara sa ovim programcicem... Ali tek kada sam prosledio portove na oba racunara znaci i klijent i server racunar moraju imati otvorene portove i iskljucene antiviruse ,firewall i sl.

E sad mene zanima, da li je moguce to jednostavnije uraditi...odnosno da program sam sebe postavi u "trust zonu" ili kako je to vec rijeseno na torrent-u i slicnim programima , jer koja je korist moje aplikacije ako ce klijenti morati ovoliku proceduru proci prije nego uspostave kontakt sa serverom....ljudi bi izgubili zelju za zivotom a kamoli za igranjem on-line igrice