Tcp/ip begynder problem
Hej forumJeg 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.