Autore Topic: Indirizzo ServerSocket  (Letto 798 volte)

Offline Geomad89

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Motorola Atrix 4g
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Indirizzo ServerSocket
« il: 23 Maggio 2012, 11:40:03 CEST »
0
Salve a tutti,
Sto tentando di creare un applicazione che deve collegarsi ad un programma, sempre fatto da me installato su un computer posto sulla stessa rete attraverso socket.
Il server socket è posto sul programma del computer mentre l'app android fa da client, ed è qui che ho bisogno del vostro aiuto:
esiste un modo per far conoscere l'ip e la porta del "server" al "client", cioè fino ad ora io mi sono andato a guardare che ip ha la macchina ed ho assegno una porta sicuramente libera, ma se pubblicherò l'app non potrò conoscere a priori questi due dati.

Ho pensato di fare cosi:

Il programma che fa da server prova a mettersi in ascolto sulla prima porta che trova libera tra alcune (ad esempio 5) scelte arbitrariamente da me, mentre il cilent scorre tutti gli indirizzi e porte (solo quelle scelte da me) della rete in cui è collegato.

Questa soluzione mi sembra veramente poco efficiente e comunque devo ancora provarla.

Grazie
« Ultima modifica: 03 Giugno 2012, 10:34:58 CEST da Geomad89 »

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Indirizzo ServerSocket
« Risposta #1 il: 23 Maggio 2012, 12:03:48 CEST »
0
Per queste cose è sicuramente consigliabile utilizzare i dns quindi associare al tuo indirizzo ip pubblico un "nome". Anche perchè se il tuo programma starà sul tuo pc di casa questo indirizzo ip cambiarà in continuazione. Per il discorso porte il tuo programma non utilizza una  porta sola? O è in ascolto su più porte?

Offline Geomad89

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Motorola Atrix 4g
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Indirizzo ServerSocket
« Risposta #2 il: 23 Maggio 2012, 12:55:55 CEST »
0
Intanto grazie per la risposta, però mi sono spiegato male.

Il programma che fa da server deve essere installata sul computer di chi scarica l' applicazione, i due dispositivi devono essere sulla stessa LAN, perciò non posso conoscere  ne l' ip ne il "nome"  del computer.

Per le porte invece, ne utilizzo una sola, il meccanismo che ho pensato funziona così:

prendo un numero qualsiasi di porte ad esempio la 1111, la 2222, e la 3333.
Ora il server prova a mettersi in ascolto sulla 1111, se non è occupata si ferma ad "ascoltare", altrimenti prova la 2222 e cosi via.

questo per limitare il numero di porte, per ogni indirizzo ip, che devono essere provate dal client nel tentare la connessione.

Spero di essermi spiegato meglio.

 

Offline pivoide

  • Utente junior
  • **
  • Post: 133
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab 10.1
  • Play Store ID:
    codicerosso
  • Sistema operativo:
    Ubuntu 11.04
Re:Indirizzo ServerSocket
« Risposta #3 il: 23 Maggio 2012, 14:18:38 CEST »
0
Il client potrebbe inviare un messaggio in broadcast (UDP) quando entra nella rete. Il server lo sente e gli invia i suoi dati per  poi cominciare la comunicazione in TCP/IP.
Documentazione UDP con esempio multicast
Odio l'inglese e per un informatico non è il massimo

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Indirizzo ServerSocket
« Risposta #4 il: 23 Maggio 2012, 15:10:32 CEST »
0
Anche se comunque una pagina di impostazioni per la configurazione manuale ci vuole perché se il firewall dell'utente blocca quei pacchetti non riesci a collegarti

Offline Geomad89

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Motorola Atrix 4g
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Indirizzo ServerSocket
« Risposta #5 il: 23 Maggio 2012, 17:31:07 CEST »
0
Il client potrebbe inviare un messaggio in broadcast (UDP) quando entra nella rete. Il server lo sente e gli invia i suoi dati per  poi cominciare la comunicazione in TCP/IP.
Documentazione UDP con esempio multicast

Perfetto grazie è proprio quello che cercavo  :-)

Anche se comunque una pagina di impostazioni per la configurazione manuale ci vuole perché se il firewall dell'utente blocca quei pacchetti non riesci a collegarti

Si si ci avevo già pensato comunque voglio fare che come primo tentativo ci sia la connessione automatica.