Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    28

    Comunicazione di più server con un client TCP

    Ciao a tutti,

    ho una domanda...è possibile avere tre processi server java (usando il protocollo TCP) che lavorano in parallelo e che comunicano tutti e tre con un unico client, senza usare i threads? Come?

    Grazie a tutti in anticipo per la risposta.

  2. #2
    Ciao a tutti,

    ho una domanda...è possibile avere tre processi server java (usando il protocollo TCP) che lavorano in parallelo e che comunicano tutti e tre con un unico client, senza usare i threads? Come?

    Grazie a tutti in anticipo per la risposta.
    Analisi lessicale del testo : tre processi-parallelo = 1 Thread SBAGLIATO
    tre processi-parallelo = 3 Thread Corretto.

    Rivedi un pò il senso dei termini "Processo","Paralleli" non credo che sia cosi difficile capirlo.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ad ogni modo, una socket (l'oggetto che si usa per la comunicazione fra un client ed un server) è un collegamento punto-punto... è come un cavo di rete: ha una testa collegata al PC e una collegata ad una presa (a muro, su uno switch, su un hub, ecc) e non è "sdoppiabile".


    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Come hanno già detto gli altri dovresti spiegare meglio cosa vuoi fare e cosa intendi per:
    << comunicano tutti e tre con un unico client >>
    Ciao.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    28
    Ciao, mi spiego meglio... devo scrivere un programma client/server per il calcolo in parallelo del prodotto di un vettore riga con una matrice. Il client deve leggere da input la matrice ed il vettore, deve partizionare la matrice in colonne ed inviare ad ognuno dei tre server usati per il calcolo, il vettore ed una delle colonne della matrice. Il calcolo del prodotto (tra due vettori quindi ) deve essere eseguito in parallelo sui tre processi server ed infine i risultati parziali devono essere aggregati sul client per produrre il vettore riga da visualizzare i output.
    Io chiedevo se si può realizzare il programma senza utilizzare i threads...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Allora vedila così:
    una applicazione può essere multi processo o multi thread (oppure anche entrambe le cose se ogni processo è pure multi thread). In entrambi i casi il calcolo è parallelo.
    Se il tuo server è costituito da più processi, la tua computazione è già parallela.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    28
    Originariamente inviato da c0der
    Allora vedila così:
    una applicazione può essere multi processo o multi thread (oppure anche entrambe le cose se ogni processo è pure multi thread). In entrambi i casi il calcolo è parallelo.
    Se il tuo server è costituito da più processi, la tua computazione è già parallela.

    Grazie per la risposta. Io ho realizzato tre server "separati" ed un client, ma sicuramente ho sbagliato qualcosa perchè il client riesce a comunicare solo con il primo server e non con gli atri due, che danno questo errore:

    "Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind"

    Come posso risolvere?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Come posso risolvere?
    Sulla macchina server una coppia indirizzoorta può essere messa in ascolto solo 1 volta,
    le successive ti daranno appunto errore "Address already in use"

    Semplicemente basta che cambi porta, esempio:
    processo1: gli fai usare la porta 4001
    processo2: la porta 4002
    processo3: la porta 4003

    Ciao.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    28
    Originariamente inviato da c0der
    Sulla macchina server una coppia indirizzoorta può essere messa in ascolto solo 1 volta,
    le successive ti daranno appunto errore "Address already in use"

    Semplicemente basta che cambi porta, esempio:
    processo1: gli fai usare la porta 4001
    processo2: la porta 4002
    processo3: la porta 4003

    Ciao.
    Ho provato a cambiare porta ma non cambia niente...e poi come fanno gli altri due server a comunicare con il client se hanno una porta diversa (da quella del client)? Non ho capito bene...

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da isal
    Ho provato a cambiare porta ma non cambia niente...
    In che senso? Se i server sono in ascolto su porte diverse non generano errori.

    e poi come fanno gli altri due server a comunicare con il client se hanno una porta diversa (da quella del client)? Non ho capito bene...
    Che gliene frega al server della porta su sui lui è in ascolto... è un problema del client.
    Chiaramente, il client dovrà effettuare 3 connessioni. Il client avrà quindi 3 socket e ciascun server comunicherà col client attraverso la "sua" socket. E' come se dal client uscissero 3 cavi... ciascuno collegato a uno dei tre server.


    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

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.