Sockets

Gostava de saber se ao criar um ServerSocket ele pode ser acessado por computadores fora da minha internet

Depende.

Um servidor inicia um socker que faz bindem uma interface de rede e uma porta.

Se essa interface for exposta pro mundo, se nenhum firewall bloquear a porta, teoricamente qq um consegue acessar.

Como vai resolver (ip ou dns) são outros quinhentos.

por exemplo, é comum um servidor bind in 0.0.0.0 pois vc acessa por qualquer interface de rede. algumas maquinas possuem multiplas interfaces de rede com propositos distintos ( uma pra fora, uma pra dentro ) e talvez vc queira que determinados serviços deem bind em certas portas ( por exemplo vc pode querer expor uma porta para debug remoto na interface que acessa sua rede interna para que ninguem fique fuçando ali ).

uma vez que vc deu bind em uma porta, ela é sua. ninguem mais consegue fazer isso ( exceto se o sistema operacional permitir, com algumas opções extras, tipo REUSE PORT ).

não raro vc tem firewalls, proxys e balanceadores de carga entre o servidor e o mundo real. se é o caso vc precisa entender como isso afeta o seu sistema. por exemplo, alguns sistemas precisam de multiplas portas ( FTP pode precisar da 20 e 21 ) e vc precisa ver se nenhuma foi bloqueada.

se vc quer expor para o mundo, eles vão precisar do seu endereço IP. entretanto em muitos casos vc pode estar sob um NAT que agrega multiplos usuarios que saem pra internet com um mesmo ip aparente. se é o caso, eu não sei como resolver isso.

se vc vai executar isso em casa: fibra optica e internet via tv a cabo podem garantir IP unico, mas não fixo (precisa confirmar isso). IP fixo custa caro então sempre q reiniciar o roteador seu IP pode mudar. se é o caso vc precisa usar um serviço de DNS. eu usava o https://www.noip.com/ para isso.

pelo DNS vc pode inclusive dizer em que porta seu servidor esta escutando, mas até la vc tem um bom caminho pela frente

1 curtida