Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    47

    Fare un messenger

    Ciao a tutti vorrei in poche parol creare in java un programma simile a msn messenger.
    Ecco in particolare cosa mi interessa che faccia e come pensavo di farlo

    1)Una specie di server a cui ci si connette, e che informa i propri contatti tramite messaggio che si é online(e questo gira su un pc).
    2)Un client che ogni utente posssiede che si connette a tale server nel quale vi é visibile la lista dei propri contatti online e nn.ù
    3)Se clicco su uno di questi contatti i chatto.

    Ecco come avevo pensato di implementare il tutto.

    Allora il server é un oggetto remoto(fatto con remote method invocation rmi) e che possiede un array di oggetti mailbox. Il client quando vuole connettersi inserisce l'ip del server(che é fisso) e la porta e fa la lookup ad esso iscrivendo nella mailbox un proprio oggetto remoto messagebox di cui é proprietario(ossia ha un campo Id col suo nome). Quando mi connetto cerco nella mail box i contatti che mi interessano e gli mando un mexx per notificare la mia presenza(in pratica il server tramite rmi fa da smista messaggi così nn devo conoscere e inserire ogni volta l'ip di quello a cui invio il mex.

    Ora quindi riesco in teoria a realizzare il punto 1 e 2 per quanto riguarda il 3 potrei fare la chat mandando messaggi a chi mi interessa sempre in questo modo(sfruttando rmi ecc), ma nn mi piace tanto, io per fare una chat tra me e un mio amico (di cui avevamo rispettivi ip l'un dell'altro) avevo usato I SOCKET, aprendo un canaòe di stream tra me e lui, e qui vorrei fare la stessa cosa all'incirca, solo che non so com fare nel senso che nei comandi per aprire lo stream tramite socket bisogna ogni volta immmettere nel codice i rispettivi ip e io nn so l'ip degli altri.

    Qualcuno ha suggerimenti?Accetto anche proposte alternartive(ho proposto questo solo perchè sn le mie conoscenze)

    Ciao egrazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il linguaggio di programmazione da utilizzare è stabilito?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    47
    Java scusa lo avevo dimendicato

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da Sgotenks
    Java scusa lo avevo dimendicato
    Ti sposto nel forum dedicato a Java.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5

    Re: Fare un messenger

    Originariamente inviato da Sgotenks
    Ciao a tutti vorrei in poche parol creare in java un programma simile a msn messenger.
    Ecco in particolare cosa mi interessa che faccia e come pensavo di farlo

    1)Una specie di server a cui ci si connette, e che informa i propri contatti tramite messaggio che si é online(e questo gira su un pc).
    2)Un client che ogni utente posssiede che si connette a tale server nel quale vi é visibile la lista dei propri contatti online e nn.ù
    3)Se clicco su uno di questi contatti i chatto.

    Ecco come avevo pensato di implementare il tutto.

    Allora il server é un oggetto remoto(fatto con remote method invocation rmi) e che possiede un array di oggetti mailbox. Il client quando vuole connettersi inserisce l'ip del server(che é fisso) e la porta e fa la lookup ad esso iscrivendo nella mailbox un proprio oggetto remoto messagebox di cui é proprietario(ossia ha un campo Id col suo nome). Quando mi connetto cerco nella mail box i contatti che mi interessano e gli mando un mexx per notificare la mia presenza(in pratica il server tramite rmi fa da smista messaggi così nn devo conoscere e inserire ogni volta l'ip di quello a cui invio il mex.

    Ora quindi riesco in teoria a realizzare il punto 1 e 2 per quanto riguarda il 3 potrei fare la chat mandando messaggi a chi mi interessa sempre in questo modo(sfruttando rmi ecc), ma nn mi piace tanto, io per fare una chat tra me e un mio amico (di cui avevamo rispettivi ip l'un dell'altro) avevo usato I SOCKET, aprendo un canaòe di stream tra me e lui, e qui vorrei fare la stessa cosa all'incirca, solo che non so com fare nel senso che nei comandi per aprire lo stream tramite socket bisogna ogni volta immmettere nel codice i rispettivi ip e io nn so l'ip degli altri.

    Qualcuno ha suggerimenti?Accetto anche proposte alternartive(ho proposto questo solo perchè sn le mie conoscenze)

    Ciao egrazie
    Se il problema è che il tuo server gestore del servizio deve girare su una macchina con IP dinamico direi che una soluzione potrebbe essere un servizio di dns virtuale come NoIp o Dynu
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    47
    Il mio problema è che questo é un server tra virgolette.Quando i client iscrivono le loro caselle di posta nell'array che c'è nel server essendo tali caselle oggeti remoti il server sempre tra virgolette ha un rifermento a queste ultime ed é quindi in grado di smistargli la posta, i messaggi, ma di fatto quando io voglio aprire uno stream tramite socket con un client devo specificare l'ip di quello con cui voglio comunicare e io nn lo so, e lui dovrebbe fare lo stesso ma si ritrova con lo stesso problema

  7. #7
    Originariamente inviato da Sgotenks
    Il mio problema è che questo é un server tra virgolette.Quando i client iscrivono le loro caselle di posta nell'array che c'è nel server essendo tali caselle oggeti remoti il server sempre tra virgolette ha un rifermento a queste ultime ed é quindi in grado di smistargli la posta, i messaggi, ma di fatto quando io voglio aprire uno stream tramite socket con un client devo specificare l'ip di quello con cui voglio comunicare e io nn lo so, e lui dovrebbe fare lo stesso ma si ritrova con lo stesso problema
    Allora non hai prestato attenzione al mio suggerimento.
    Lo Scenario che ti propongo è questo: tu hai il tuo programma server che fa da gestore del servizio pseudo-msn, esso riceve le richieste dai vari clients (cioè i programmi usati dagli utenti per chattare) e li mette in contatto mediante dei nicknames assegnati in fase di registrazzione al servizio.
    Un utente che vuole chattare deve connettersi prima di tutto al servizio (cioè al tuo programm a server) e per farlo ha bisogno di conoscere l'ip della macchian in cui gira, se esso è statico non hai alcun problema, se è dinamico puoi usare uno di quei servizi che ti ho detto i quali hanno proprio lo scopo di associare ad una stessa macchina che si conentte con ip variabili un unico "nome" (un dominio virtuale).
    Poi una volta che il tuo utente si connette al server questo gli può proporre una serie di altri nicknames con cui chattare (quelli degli altri che si sono registrati) e li può mettere in contatto. La prima cosa che mi viene in mente è che il server potrebbe ricevere tutti i messaggi da un utente e poi reinoltrarli a tutti gli utenti con cui questo ha aperto una discussione, ma potrebbero esserci soluzioni più efficienti.

    Spero di essermi spiegato,seno chiedi
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    Ci ho pensato un attimo e la soluzione di far passare tutti i messaggi per il server che poi li reinoltri ai membri della chat è uno schifo perchè all'aumentare degli utenti connessi le prestazioni calerebbero e si creerebbe anche un buco di sicurezza. Una soluzione migliore è quella di fare in modo che il server si faccia inviare da ogni client l'IP in modo da mantenere aggiornata una tabella del tipo IP/Nickname, successivamente il server può comandare ad un certo client (il programma di chat) di instaurare delle connessioni via socket con gli utenti con i quali ha aperto una discussione inviandogli le informazioni necessarie (cioè i loro IP)
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    47
    Perfetto vado che hai capito quale era il mio problema,e perchè mi piaceva di piu usare i socket.
    Mi resta un inico problema nel senso per un client é facile inviare il proprio mick, che può scegliere all'avvio della connessione, ma per quanto riguarda l'ip c'è un comanda java affinchè veng rilevato automaticamente e nn sia l'utnte a doverlo guardare via dos o dalle connessioni di rete?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da unomichisiada
    Una soluzione migliore è quella di fare in modo che il server si faccia inviare da ogni client l'IP in modo da mantenere aggiornata una tabella del tipo IP/Nickname, successivamente il server può comandare ad un certo client (il programma di chat) di instaurare delle connessioni via socket con gli utenti con i quali ha aperto una discussione inviandogli le informazioni necessarie (cioè i loro IP)
    Questo crea un problema di fondo: su quale porta avviene la comunicazione?
    Risposta: sulla porta X.
    Bene.
    Dopo che Tizio ha effettuato la connessione con Caio sulla porta X, decide di effettuare una connessione anche con Sempronio... quale porta utilizza?


    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.