Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Josten
    Registrato dal
    Jan 2011
    Messaggi
    25

    [JAVA] delucidazioni serverSocket ip e porte

    Salve a tutti!
    Volevo sapere qualche info sul serversocket, ho cercato ma in rete ma le info che trovo sono molto frammentate e quelle in italiano fanno solo esempi e non spiegano come utilizzarli al meglio...
    attualmente con l'aiuto del libro sono riuscito a fare una chat client/ server dove però la connessione in/out avviene con un messaggio per volta.. ovvero client,server,client,server e cosi' via.. detto in parole povere se il client o il server scrive due messaggi di seguito senza aspettare la risposta questi messaggi non vengono visualizzati al client..

    Lasciando stare la chat.. vorrei sapere
    -Per ogni socket aperto dal serversocket con un client ho due ip (ovviamente uno client e uno server) ed una sola porta, se nel frattempo voglio accettare altre connessioni devo aprire una porta diversa dalla precedente?

    -per individuare in un qualsiasi momento l'ip di uno dei client connessi al server posso fare riferimento alla porta del socket di cui voglio l'ip?

    devo utilizzare i thread per ottenere più connessioni simultanee o questo è già previsto dal server soket?

    scusate per le caxxate che forse potrei aver scritto ma è la prima volta che cerco di utilizzare i socket in java

  2. #2

    Re: [JAVA] delucidazioni serverSocket ip e porte

    Originariamente inviato da Josten
    -per individuare in un qualsiasi momento l'ip di uno dei client connessi al server posso fare riferimento alla porta del socket di cui voglio l'ip?
    Si, per quanto riguarda l'implementazione TCP puoi usare il metodo
    public SocketAddress getRemoteSocketAddress()

    Originariamente inviato da Josten
    devo utilizzare i thread per ottenere più connessioni simultanee o questo è già previsto dal server soket?
    Se intendi la gestione simultanea dei vari client, la risposta è si.

  3. #3
    Utente di HTML.it L'avatar di Josten
    Registrato dal
    Jan 2011
    Messaggi
    25

    Re: Re: [JAVA] delucidazioni serverSocket ip e porte

    Originariamente inviato da VincenzoTheBest
    Si, per quanto riguarda l'implementazione TCP puoi usare il metodo
    public SocketAddress getRemoteSocketAddress()


    Se intendi la gestione simultanea dei vari client, la risposta è si.
    OK.. intanto grazie mille... cerco di farmi bastare queste informazioni e ci lavoro su..

    dovrei implementare in un gioco che ho già fatto in java, il multi-player... per adesso voglio solo vedere se riesco ad accettare 3 - 4 connessioni tutte allo stesso server, e magari da un client remoto "loggato" come root vedere tutte le connessioni del server e i vari ip dei client..

    primo passo (accettare più connessioni e visualizzarle)
    per accettare esempio 6 connessioni al massimo tutte contemporaneamente devo quindi avere 6 porte sempre libere giusto?

    posso rimanere sempre in ascolto su una singola porta (quella per cercare i giocatori e metterli sulla lobby) e soltanto quando il server viene contattato assegnare al client una nuova porta con cui rimanere connesso?

  4. #4

    Re: Re: Re: [JAVA] delucidazioni serverSocket ip e porte

    Originariamente inviato da Josten
    primo passo (accettare più connessioni e visualizzarle)
    per accettare esempio 6 connessioni al massimo tutte contemporaneamente devo quindi avere 6 porte sempre libere giusto?
    Si, laddove ci sono istanze di ServerSocket collegate (binding) ad esse.

    Originariamente inviato da Josten
    posso rimanere sempre in ascolto su una singola porta (quella per cercare i giocatori e metterli sulla lobby) e soltanto quando il server viene contattato assegnare al client una nuova porta con cui rimanere connesso?
    Tutti i client che non stanno giocando puoi metterli in una struttura a parte, conservando la loro connessione.

  5. #5
    Utente di HTML.it L'avatar di Josten
    Registrato dal
    Jan 2011
    Messaggi
    25
    ok... vedo che posso fare... grazie ancora... appena finisco vi informo (potrebbero occorrere alcuni anni )

    EDIT:
    aggiungo... per chi ha validi esempi di serversocket utilizzato con thread per ricevere e accettare connessioni li posti pure... ^^ (anche english va bene )

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Eh? Mi sa che state facendo grossa confusione:

    1) Il server deve rimanere in ascolto su un IP e una sola porta. Lì arrivano tutti i client.
    2) Non devi avere una porta libera per ciascun client... te ne basta una per tutti.
    3) Il server gestirà ciascun client con un thread separato, il quale gestirà la sua bella Socket che è agganciata al client connesso.

    Non a caso, l'oggetto ServerSocket prende come parametri un IP e una sola porta.
    In buona sostanza, il lavoro del server dovrebbe essere:

    1) Accetta una connessione
    2) Falla gestire ad un thread
    3) Rimettiti in attesa di un'altra connessione

    (più, eventualmente, una serie di altri lavoretti di contorno)

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Originariamente inviato da LeleFT
    Eh? Mi sa che state facendo grossa confusione:
    Io ho solo detto che nessuno ti vieta di fare il binding di 6 istanze di ServerSocket su altrettante porte distinte.

  8. #8
    Utente di HTML.it L'avatar di Josten
    Registrato dal
    Jan 2011
    Messaggi
    25
    Originariamente inviato da LeleFT
    Eh? Mi sa che state facendo grossa confusione:

    1) Il server deve rimanere in ascolto su un IP e una sola porta. Lì arrivano tutti i client.
    2) Non devi avere una porta libera per ciascun client... te ne basta una per tutti.
    3) Il server gestirà ciascun client con un thread separato, il quale gestirà la sua bella Socket che è agganciata al client connesso.

    Non a caso, l'oggetto ServerSocket prende come parametri un IP e una sola porta.
    In buona sostanza, il lavoro del server dovrebbe essere:

    1) Accetta una connessione
    2) Falla gestire ad un thread
    3) Rimettiti in attesa di un'altra connessione

    (più, eventualmente, una serie di altri lavoretti di contorno)

    Ciao.
    ah.. quindi per identificare l'ip di un determinato client come faccio?
    (PS il fatto che il serversocket lavori così mi semplifica di molto la vita!!)

  9. #9
    Originariamente inviato da Josten
    ah.. quindi per identificare l'ip di un determinato client come faccio?
    (PS il fatto che il serversocket lavori così mi semplifica di molto la vita!!)
    Quando un client stabilisce una connessione TCP (handshake) con il server, il metodo public Socket accept(), restituisce una istanza di java.net.Socket

    Dunque, per ottenere l'indirizzo IP del client invochi su tale istanza il metodo
    public SocketAddress getRemoteSocketAddress().

  10. #10
    Utente di HTML.it L'avatar di Josten
    Registrato dal
    Jan 2011
    Messaggi
    25
    quindi in questo caso visto che uso

    codice:
    connessione= sSocket.accept();
    dovrei creare un arraylist di "connessioni" così da poter di volta in volta richiamare il metodo da te scritto su queste istanze...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.