Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    p2p e socket

    salve,
    mi sono avvicinato da poco alla programmazione java. Devo realizzare un rudimentale sistema p2p basato su server di indirizzamento per condivisione di file. Quindi ogni client si collega attraverso una socket a un server che è in attesa su una serversocket e per ogni richiesta di connesione lancia un thread che si occupa di creare una socket dedicata alla comunicazione con questo client e grazie alla quale attraverso opportuni output e input stream riceverà ad esempio la lista dei files presenti nel client e comunicherà la lista dei files globale. Questo procedimento è valido per ogni client che si connette al server.
    Nel momento in cui uno dei client vuole scaricare uno dei files presenti nella lista dei files (all'interno della quale già è presente l'indirizzo del relativo client per ogni file) si connette direttamente a tale client.
    La prima domanda è se questo client che riceve la richiesta di trasferimento, attende e trasferisce poi, attraverso la stessa socket che ha attaccata al server o ne deve per forza creare una nuova, cosa che secondo me comporterebbe che tale client abbia già attiva anche una serversocket che agisce come nel server per ogni richiesta di trasferimento.
    Per il resto il funzionamento è quello sopra descritto?
    grazie in anticipo a tutti

  2. #2
    fammi capire... progetto di programmazione di rete con Bongiovanni?
    Informatica alla sapienza eh?
    Piccolo il web!
    E dire che non passo mai su questa sezione...

    Comunque.. se ho capito bene la tua domanda: credo che i client, quando funzionano da server per altri client (cioè gestiscono le richieste di files), debbano aprire una connessione per ogni file scambiato. Almeno io ho fatto così.. poi sono anche io principiante con il Java ^_^

  3. #3
    piccolo il web si...
    quindi per ogni client hai una serversocket in attesa di richiesta di trasferimento files? e per ogni richiesta lanci un thread che si occupa di gestire il traferimento dalla socket ritornata dalla accept()?

    p.s. hai messanger? così magari ci scambiamo opinioni runtime

  4. #4
    Originariamente inviato da jurigagarin
    piccolo il web si...
    quindi per ogni client hai una serversocket in attesa di richiesta di trasferimento files? e per ogni richiesta lanci un thread che si occupa di gestire il traferimento dalla socket ritornata dalla accept()?

    p.s. hai messanger? così magari ci scambiamo opinioni runtime
    sì, praticamente la base èq uesta:
    un thread che resta in ascolto di richieste di altri client (e lancia nuovi thread che gestiscono lo scambio)
    un thread che resta in contatto con il serverr (gli anda la lista e attende la lista globale che può arrivare più volte ed in più momenti ovviamente)
    un thread per la gui che lancia nuovi thread per richiedere files ad altri client

    L'ho impostato così

    Il contatto msn lo vedio nel mio profilo.. ma al momento non ho tantissimo tempo causa altri esami

  5. #5
    Utente di HTML.it L'avatar di energie
    Registrato dal
    Apr 2003
    Messaggi
    446
    non è più veloce far mandare ai clients la propria lista files al server che le inserisce tutte in una e su richiesta la manda ai clients?

  6. #6
    Originariamente inviato da energie
    non è più veloce far mandare ai clients la propria lista files al server che le inserisce tutte in una e su richiesta la manda ai clients?
    è un requisito del progetto.. il server aggiorna la lista globale quando riceve la lista di un client e la manda ad ogni client connesso ogni volta...

  7. #7
    Utente di HTML.it L'avatar di energie
    Registrato dal
    Apr 2003
    Messaggi
    446
    ah k

  8. #8
    sto provando la prima connessione fra client e server...
    il server ritorna dalla accept() una socket che da quello che credevo era attaccata ad una nuova porta. Invece mettendo due print sullo standard output del server la porta locale stampata con server.getLocalPort() e quella con client.getLocalPort() risultano uguali..
    e poi un altra domanda. il client al momento della creazione si connette alla porta in cui è in attesa il server che poi crea a sua volta una socket attaccata alla porta del client (quella assegnata dal sistema operativo al momento della creazione). ma per avere una connessione dedicata fra client e server, il client non dovrebbe a sua volta attaccare una nuova socket alla nuov socket del server? altrimenti si rischierebbe che il thread che è in attesa di connessioni del server riceva invece richieste di servizi del client già connesso! sbaglio?
    illuminatemi vi prego

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.