Avatar billede howtowinplx Nybegynder
21. maj 2011 - 16:10 Der er 4 kommentarer og
1 løsning

Tcp/ip begynder problem

Hej forum

Jeg er ved at sætte mig ind i, hvordan jeg kan forbinde flere computere i en tcp forbindelse. Jeg har noget ret basal kode, som stadig forvolder mig problemer. Som det står nu har mit program en server samt en client funktion. Når man vælger, at åbne en serversocket lægges ens ip-adresse op i min database, hvorfra client funktionen kan hente denne og forsøge, at forbinde sig på samme port. Dette fungerer, hvis jeg er på samme netværk og bruger den lokale ip-adresse, men hvis jeg bruger den offentlige ip-adresse, hvilket er nødvendigt hvis jeg vil forbinde computere på forskellige netværker kan jeg ikke forbinde dem - om de så er på samme netværk eller ej. Hvad der samtidig undrer mig er, at jeg på nogle netværk får "Connection refused" mens jeg på andre netværk bare får "Connection time-out".

Her er det relvante kode:

Helt principielt er dette hvad jeg gør (har udeladt noget kode, som bare benyttes ift. resten af programmet og ikke er relevant):

Serverhosten:
s = (new ServerSocket(socketNumber)).accept();
Client:
s = new Socket(ip, socketNumber);

s er af typen Socket i begge tilfælde. socketNumber er en hard-kodet final int, der repræsenterer port#. ip er en String, som repræsenterer hostens public ip. Jeg er helt sikker på, at det er den rigtige ip.

For at opsummere: Ovenstående kode er rigtig nok ved lokale netværk - men er den brugbar over internettet? Jeg har både forsøgt mig med reserverede porte og ukendte porte, som jeg kan forestille mig bliver blokkeret af routerens firewall.
Har ledt rigtig længe på google, men kan ikke finde nogen løsninger, som har direkte relevans til det her.
Avatar billede heinzdmx Nybegynder
21. maj 2011 - 16:52 #1
Hvis der er koblet en router på netværket, så vil routeren være den enhed som du rammer med den offentlige IP.

For at routeren sender det videre til en anden enhed skal du lave Portforwarding, hvilket gøres på en speciel måde ud fra hvilken router der er tale om.
Avatar billede howtowinplx Nybegynder
21. maj 2011 - 17:19 #2
Bliver de reserverede porte ikke forwarded som standard?
Avatar billede heinzdmx Nybegynder
21. maj 2011 - 17:22 #3
Routeren skal jo vide hvilken computer den skal sende oplysninger hen til. Hvis der f.eks. er 3 computere på netværket kan den jo ikke finde ud af hvilken den skal vælge, og tvivler på at den gør det selv ved 1, ellers er der jo ikke meget firewall over den.
Avatar billede howtowinplx Nybegynder
21. maj 2011 - 18:05 #4
Ah selvfølgelig. Ja jeg er altså begynder med netværker. :P Nu har jeg forwarded porten til den pc, jeg kører serveren fra og så funker det sgu. Læg et svar ind. :)
Avatar billede heinzdmx Nybegynder
21. maj 2011 - 18:11 #5
Svar her :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester