Results 1 to 17 of 17

Thread: Port forwarding pitanje (i .NET TcpListener i TcpClient klase)

  1. #1
    Join Date
    Sep 2004
    Location
    bijeli svijet
    Posts
    3,134
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    3 Posts

    Default Port forwarding pitanje (i .NET TcpListener i TcpClient klase)

    Imam ovaj/sličan problem: http://www.vbforums.com/showthread.php?t=506751, ali i server i client su na wireless mreži, a mislim da ISP neće imat mnogo razumijevanja ako mu spomenem portove. Eksperimentisao sam i sa portovima i sa adresama, zaludu.

    Ima li ko kakav savjet? Kad rade Skype i utorrent, što ne bi i moja aplikacija mogla? ISP ima neki spisak dobroćudnijeh aplikacija? :numbness:

  2. #2
    Join Date
    Sep 2004
    Location
    bijeli svijet
    Posts
    3,134
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    3 Posts

    Default

    Napisao sam u VB.NET klijent-program i server-program sa TCP/IP komunikacijom.

    I server i klijent imaju ovakav kod za TcpListener:
    Code:
    server = New TcpListener(IPAddress.Any, PORT)
    server.Start()
    
                While True
                    Dim client As TcpClient = server.AcceptTcpClient()
                    Dim stream As NetworkStream = client.GetStream()
                    Dim i As Integer = stream.Read(buffer, 0, buffer.Length)
    
                    While (i <> 0)
                        ' do something with data
                        . . . . . . . . .
    i ovakav kod za TcpCLient:
    Code:
    client = New TcpClient(IP, PORT)
    Dim stream As NetworkStream = client.GetStream()
    stream.Write(data, 0, data.Length)
    Server ima poznatu IP adresu, a klijentovu dobija kad klijent pošalje prvi paket:
    Code:
    ClientIP = CType(client.Client.LocalEndPoint, IPEndPoint).Address.ToString

    Problem: Ništa ne stiže na server. Ne znam jesam li dao dobre parametre konstruktorima. Mislim da je New TcpListener(IPAddress.Any, PORT) dobro. Ne znam je li New TcpClient(IP, PORT) dobro u klijent-programu. Ako mu dam globalnu IP adresu servera (primjera radi 66.192.130.137) i port 20154 dobijem grešku:
    No connection could be made because the target machine actively refused it 66.192.130.137:20154
    Sve radi ako stavim 127.0.0.1.

    Je li port forward za 20154 rješenje? Problem je što:
    • Ja imam program koji ne želim dijelit. Postoji jedan primjerak servera na mojoj mašini i želim da tako i ostane.
    • Moj WISP će mi vjerojatno reć da me ne razumiju li da tražim nemoguće.
    • Program je za mene vrijedan, ali ne toliko da kupujem novi internet radi njega.


    Šta mi savjetuješ? Sad mi pade na'm kako bih moga stavit tempiranu bombu u server, ali to mi nije ni stalno ni elegantno rješenje.

  3. #3
    Join Date
    Nov 2006
    Posts
    196
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    Zasto ne koristis lokalnu IP adresu servera?

  4. #4
    Join Date
    Sep 2004
    Location
    bijeli svijet
    Posts
    3,134
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    3 Posts

    Default

    Jer je cilj programa internet komunikacija. Sad sam proba postavit server na mašinu čijem routeru imam pristup. Port forward + firewall exception + globalna adresa = client veli:
    A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 78.X.X.X:YYYY
    Nemam ideja.

  5. #5
    Join Date
    Nov 2006
    Posts
    196
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    Ok, shvatio sam da ce client i server da budu unutar wireless mreze.
    To ti vec nije nimalo jednostavno ako hoces da se klijent konektuje na server koji je iza rutera, jer ruter odbija komunikaciju koja dolazi spolja. Da bi proslijedio nesto unutar mreze ruter mora da ima rekord u svojoj tabeli koji sadrzi informacije o komunikaciji 2 strane (nesto tipa Adresa1:Port1 - Adresa2:Port2). U principu server prvo mora da pokusa da se konektuje (lazno) na klijenta da bi "probio rupu" u ruteru tako da ruter zna kome da proslijedi u obrnutom smjeru. Tu ti treba jos dodatni "menadzer" server koji je globalno dostupan i na koji su i klijent i server aplikacije konektovane.
    Tako bar rade P2P aplikacije. Trazi malo na google o TCP hole punching, evo ti jedan neki link http://reports-archive.adm.cs.cmu.ed...SRI-05-104.pdf

  6. #6
    Join Date
    Sep 2004
    Location
    bijeli svijet
    Posts
    3,134
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    3 Posts

    Default

    Hvala ti za odgovor. Pokušaću sjedinit "menadžera" i server i stavit to na ovu mašinu kod koje imam port forward (privremeno). Da ako nađem kakav gotovi kod. Dok to ne uspije, zamoliću klijente da traže of WISP-a port forward. Mislim da je to rješenje.

  7. #7
    Join Date
    Sep 2004
    Location
    bijeli svijet
    Posts
    3,134
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    3 Posts

    Default

    Pokušavam i poluđeh. :disturbed: Jasan mi je princip ali ne i implementacija. Ne mogu nać gotovi kod. Ako sam dobro razumio: Klijent može vazda poslat poruku serveru jer su adresa i port poznati. (Svejedno je ima li server globalnu IP adresu ili je iza routera koji proslijeđuje pakete za fiksiran port, zar ne?) Klijent je iza routera (recimo javni wireless) i klijent inicira vas promet. Zaključujem:
    - Klijent šalje pakete non-stop i svaki put privremeno oslobađa jedan port za komunikaciju.
    - Server sluša non-stop, ali odgovara samo ako ima šta reć.

    Meni nije jasno na kojem nivou ovo treba radit. Pokušao sam sa ovakvim kodom unutra odgovarajućih threadova.

    Code:
     ' SERVER CODE 
     server =  New TcpListener(IPAddress.Any, 18951)
     server.Start()
    
     Dim buffer(512) As Byte
     Dim Message() As Byte = UTF8.GetBytes("Hello.")
    
     While True
           Dim client As TcpClient = server.AcceptTcpClient()
           Dim stream As NetworkStream = client.GetStream()
           Dim i As Integer = stream.Read(buffer, 0, buffer.Length)
    
           If i <> 0 And ValidRequest(buffer) Then
                 stream.Write(message, 0, message.Length)
           End If
    
           stream.Close()
           client.Close()
     End While
    Code:
     ' CLIENT CODE 
     Dim buffer(512) As Byte
     Dim Data() As Byte = UTF8.GetBytes("VALID REQUEST")
    
     While True
           Dim client = New TcpClient(SERVER_IP, 18951)
           Dim stream As NetworkStream = client.GetStream()
    
           stream.Write(Data, 0, Data.Length)
    
           Dim i As Integer = stream.Read(buffer, 0, buffer.Length)
    
           If i <> 0 Then
                  Console.WriteLine(UTF8.GetString(Data))
           End If
    
           stream.Close()
           client.Close()
     End While
    Ukratko, klijent radi stream.Write(), a server stream.Read() pa stream.Write(), ali to vjerojatno nije to jer sam opet primio:
    A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond X.X.X.X:18951
    Nije mi jasno zašto je tako teško nać kod. Ovo je moralo trebat nekome i prije mene.

  8. #8
    Join Date
    Nov 2006
    Posts
    196
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    Da razjasnimo, X.X.X.X:18951 je javna adresa i port rutera na koji pokusava klijent da se konektuje.
    Podesio si port forwarding u ruteru da sa 18951 prosljedjuje na Y.Y.Y.Y:18951 koja je lokalna adresa i port racunara na koji server slusa?

  9. #9
    Join Date
    Feb 2004
    Location
    Far away from here
    Posts
    3,730
    Thanks Thanks Given 
    3
    Thanks Thanks Received 
    3
    Thanked in
    3 Posts

    Default

    Meni nije jasno zasto se forsira jedan tip portova koji je po defaultu u svakoj ozbilnijoj mrezi zatvoren. Nije problem otvoriti port, ali kao sto si rekao, objasniti zasto ga otvoriti ehem.. Da li mozes komunikaciju prebaciti na port 80, npr ? Da li je neka strana (klijent/server) iza proksija ?
    " Damn the cargo, we'll be on our way tonight "

  10. #10
    Join Date
    Feb 2004
    Location
    Far away from here
    Posts
    3,730
    Thanks Thanks Given 
    3
    Thanks Thanks Received 
    3
    Thanked in
    3 Posts

    Default

    A da bi podijelio sa nama, ada cus... A da pita, valjda ce neko znat. He.
    " Damn the cargo, we'll be on our way tonight "

  11. #11
    Join Date
    Sep 2004
    Location
    bijeli svijet
    Posts
    3,134
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    3 Posts

    Default

    Odmah li je očigledno, c c c. Preseljavam, pa neću moć oko ovoga radit još koji dan.

    Bozocv, u pravu si, server je iza NAT routera. IP adresu i broj porta sam izmislio dok sam kucao. Koristio sam normalne brojeve. (Zar je bitno? Moj je router.) Na routeru je namješten port forward. Javiću kad testiram sa http://canyouseeme.org.

  12. #12
    Join Date
    Sep 2007
    Location
    Inside
    Posts
    3,619
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    Da nece ovo da DDosuje ovuda....

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. M: PCI parallel port card za parallel port bracket
    By jakov_ct in forum Računarska oprema i tehnika
    Replies: 5
    Last Post: 10-05-11, 15:02
  2. P: vucnu kuku za mercedes e -klase
    By montegruja in forum Ostali oglasi
    Replies: 0
    Last Post: 16-05-10, 16:45
  3. Korupcija A klase - Mi i Mercedesi
    By MonterO in forum Budućnost Crne Gore
    Replies: 108
    Last Post: 14-04-10, 23:44
  4. Najbolji MPV srednje klase!
    By Fabia_Elegance! in forum Automobilizam arhiva
    Replies: 7
    Last Post: 20-08-05, 17:16
  5. Nakon A klase...
    By Fabia_Elegance! in forum Automobilizam arhiva
    Replies: 9
    Last Post: 29-07-05, 15:31

Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •