[JAVA] chat, inviare messaggio mentre resto in ascolto

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Enry2108
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 28 novembre 2008, 0:30
Località: Portomaggiore

[JAVA] chat, inviare messaggio mentre resto in ascolto

Messaggio da Enry2108 »

Salve, sto creando il lato Client di una chat in java, questo è il codice:

Codice: Seleziona tutto

import java.io.*;
import java.net.*;
import java.nio.*;

public class ClientJava{

public static DataOutputStream DOS = null;
public static DataInputStream DIS = null;
public static Socket client = null;


	public static void main(String[] args){


	System.out.println("Client START");
	System.out.println("Connessione in corso...");

		//creazione del MSG da inviare
 		Msg msg = new Msg();
                msg.Tipo="L";
                msg.Mittente ="";
                msg.Destinatario="";
                msg.Mess= "enry2108";
                msg.Lunghezza= msg.Mess.length();
	
		try{
			//creazione Socket
			client = new Socket("192.168.2.10",1328);
			System.out.println("Connessione Effettuta con Successo!!!");
			//creazione Stream
			DIS= new DataInputStream(client.getInputStream());
			DOS = new DataOutputStream(client.getOutputStream());
			
			//invio messaggio
			send(msg);
			
			//Messaggio in arrivo
			byte[] buf1 = new byte[1520];
			ByteBuffer bb = ByteBuffer.wrap(buf1);
			while(true){
				if(!msg.Tipo.equals("X")){
					DIS.read(buf1);
					Msg_rcv msg_rcv = new Msg_rcv();
                       			byte[] b = new byte[bb.remaining()];           
         	              		bb.get(b);
                       
       	                 		msg_rcv.Tipo_rcv = new String(b ,0,1);
                       	 		msg_rcv.Mittente_rcv = new String(b ,1,256);
                       			msg_rcv.Destinatario_rcv = new String(b ,257,256);
                        		msg_rcv.Lunghezza_rcv = new String(b ,516,1);
                       			msg_rcv.Mess_rcv = new String(b ,517,1000);
                   

	                      		System.out.println("[CLIENT]: msg_rcv: Tipo: " + msg_rcv.Tipo_rcv + " Mittente: " + msg_rcv.Mittente_rcv + " Destinatario: " + msg_rcv.Destinatario_rcv + " Lunghezza: " + msg_rcv.Lunghezza_rcv + " Messaggio: " + msg_rcv.Mess_rcv);

	                        	bb.flip();
	                        	bb.clear();
				}else{
					close();
					System.out.println("Disconnessione!!!");
					break;

				}
			}
			

		}catch(IOException e1){
			e1.printStackTrace();
			System.out.println("Connessione fallita: Socket non creata");
		}
	}

	//Invio del messaggio di Login
	public static void send(Msg msg){
		try{
		ByteBuffer buf = ByteBuffer.allocate(1517);

               	buf.put(msg.Tipo.getBytes()).position(1);
        	buf.put(msg.Mittente.getBytes()).position(257);        
                buf.put(msg.Destinatario.getBytes()).position(516);               
       	        buf.put((byte) msg.Lunghezza).position(517);                
       	        buf.put(msg.Mess.getBytes()).position();
             
          	byte[] baf = buf.array();

                DOS.write(baf);

		System.out.println("Messaggio inviato");
		System.out.println("[CLIENT]: msg_snd: Tipo: " + msg.Tipo + " Mittente: " + msg.Mittente + " Destinatario: " + msg.Destinatario + " Lunghezza: " + msg.Lunghezza + " Messaggio: " + msg.Mess);


               	buf.flip();
                buf.clear();  

		}catch(IOException e1){
			e1.printStackTrace();
			System.out.println("Messaggio NON inviato");
		}

	}
	
	//chiusura Stream e Socket
	public static void close(){
		try{
			DIS.close();
			DOS.close();
			client.close();
		
		}catch(Exception e){
		
		}
	}
}
Ora sono un pò bloccato, devo creare la chat senza interfaccia grafica, e da terminale non so come poter inviare più messaggi, rimanendo sempre in ascolto del Server. Qualcuno può consigliarmi come muovermi? Grazie
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] chat, inviare messaggio mentre resto in ascolto

Messaggio da Zoff »

Metti la parte della server socket in un Thread
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Enry2108
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 28 novembre 2008, 0:30
Località: Portomaggiore

Re: [JAVA] chat, inviare messaggio mentre resto in ascolto

Messaggio da Enry2108 »

Il Server, è un Server C che non posso andare a toccare per motivi di progetto.
Devo costruire in Java solo il lato client, con quelle funzioni di invio e ricezione.
Che mi derivano da un altro progetto Android nel quale ci sono problemi con il messaggio di ritorno. E quindi devo fare un prova con il Client Java. :muro:
Insomma, posso muovermi solo su questo codice Client :D
Enry2108
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 28 novembre 2008, 0:30
Località: Portomaggiore

Re: [JAVA] chat, inviare messaggio mentre resto in ascolto

Messaggio da Enry2108 »

devo per forza creare un thread per poter sia rimanere in ascolto che inviare più messaggi? è il modo più semplice?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] chat, inviare messaggio mentre resto in ascolto

Messaggio da Zoff »

È l'unico modo
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Enry2108
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 28 novembre 2008, 0:30
Località: Portomaggiore

Re: [JAVA] chat, inviare messaggio mentre resto in ascolto

Messaggio da Enry2108 »

Quindi creo il thread "client" e lo lancio nel main, all'interno lascio la creazione della socket e il mio while(true). ok e fin qui ci sono.
Come faccio a leggere i messaggi da inserire nella funzione di invio? da riga di comando?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] chat, inviare messaggio mentre resto in ascolto

Messaggio da Zoff »

Come leggeresti un qualsiasi messaggio inserito nella linea di comando.
Ci sono tanti modi. Scanner, BufferedReader, etc...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti