Visualizzazione dei risultati da 1 a 3 su 3

Discussione: socket java

  1. #1
    Utente di HTML.it L'avatar di killall
    Registrato dal
    Feb 2003
    Messaggi
    125

    socket java

    Ho una chat in java e il server è in attesa che un client si connetti.
    il client che ho si collega subito all'avvio.
    se ho un nick nel client come posso farlo vedere al server?
    il server si crea un vettore di thread che sono in run.
    il sistema funziona ma non so come funziona bene il socket.
    cioè allevento di una connessione il server non può ottenere + informazioni dal client. se si come so può fare il client?
    grazie ciao
    "Sono i miei testi a dirti chi sono, più di qualsiasi cosa tu abbia sentito su come sono fatto dalla cinta in giù (Robert Plant)"

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Semplice: fai in modo che l'utente inserisca il suo nik e quando preme un pulsante, allora viene effettuata la connessione al server.

    Crei una classe Messaggio (che ce l'avrai già) e setti in questa classe il nik dell'utente, poi lo spedisci al server:

    Supponiamo che l'ObjectOutputStream della socket si chiami oos:

    codice:
    msg.setNomeUtente(nomeUtente);
    oos.writeObject(msg);
    In questo modo viene inviato il nome utente al server, che dall'altra parte è in attesa di un messaggio sull'ObjectInputStream (ois):

    codice:
    Messaggio msg = (Messaggio) ois.readObject();
    String nomeUtente = msg.getNomeUtente();
    Le socket sono utilissime e facili da usare. Quando il server accetta la tua connessione (Socket s = ServerSocket.accept(); ) crea automaticamente una socket, che ti mette a disposizione due oggetti:

    InputStream: s.getInputStream();
    OutputStream: s.getOutputStream();

    che ti servono, rispettivamente, per RICEVERE e SPEDIRE informazioni dall'altra parte. Con questi puoi creare degli ObjectInputStream e ObjectOutputStream per ricevere e spedire degli oggetti Java (Serializable), in modo da avere messaggi strutturati.


    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

  3. #3
    Attenzione però, così c'è il rischio che più utenti possano avere lo stesso nick.
    Comunque usando il protocollo tcp vale tutto ciò che è stato scritto, potresti avere unicamente dei problemi sul server a capire quando effettivamente il client si è sconnesso.
    Ricordo che la semplice ricarica della pagina html che contiene l'applet da parte del client mi provocava l'avvio di un nuovo thread e sul server faticavo a capire quale era la connessione da abbattere.

    Ciao ciao, Denis.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.