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

    [JAVA]Recuperare date & time da server

    Ciao ragazzi,
    vorrei sapere come ricavare la data e l'ora da un server al quale mi connetto tramite socket.
    Questo è il codice di connessione che ho appena scritto, molto semplice.
    codice:
    package it.tecnositaf.rmt.driver.meteo.driver;
    
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    import java.net.SocketAddress;
    import java.net.SocketTimeoutException;
    import java.net.UnknownHostException;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    
    import it.tecnositaf.rmt.driver.acquireMeasure.generic.v1.AcquireMeasureRequest;
    import org.apache.log4j.Logger;
    
    /**
     * 
     * @author davide
     * 
     *         Crea una connessione socket al device, utilizzando la porta 9903 e
     *         l'indirizzo ip del dispositivo
     */
    
    public class CreateSocketConnection {
    
    	private int port = MeteoDriverConst.SOCKET_PORT;
    	private String ip;
    
    	private static Logger logger = Logger
    			.getLogger(AcquireMeasureRequest.class);
    
    	public CreateSocketConnection(int port, String ip) {
    		this.port = port;
    		this.ip = ip;
    	}
    
    	public void CreateConnection() {
    		try {
    
    			InetAddress address = InetAddress.getByName(ip);
    			SocketAddress sockaddress = new InetSocketAddress(address, port);
    
    			/**
    			 * Creazione del socket
    			 */
    
    			Socket socket = new Socket();
    			DataInputStream istream = new DataInputStream(socket
    					.getInputStream());
    			DataOutputStream ostream = new DataOutputStream(socket
    					.getOutputStream());
    
    /**
    *parte commentata, penso prenda la data del client in questo modo
    **/
    
    			// Calendar dateAndtime = new GregorianCalendar();
    			// int gg = dateAndtime.get(Calendar.DATE);
    			// int mm = dateAndtime.get((Calendar.MONTH) + 1);
    			// int aa = dateAndtime.get(Calendar.YEAR);
    			// int ora = dateAndtime.get(Calendar.HOUR);
    			// int min = dateAndtime.get(Calendar.MINUTE);
    			// int sec = dateAndtime.get(Calendar.SECOND);
    			//
    			// String data = "" + gg + ":" + mm + ":" + aa + "  " + ora + ":"
    			// + min + ":" + sec;
    
    			/**
    			 * Creo un timeout dopo il quale la connessione viene interrotta
    			 */
    
    			int timeoutMs = 2000; // 2 seconds
    			socket.connect(sockaddress, timeoutMs);
    
    			istream.close();
    			ostream.close();
    			socket.close();
    
    		} catch (UnknownHostException e) {
    		} catch (SocketTimeoutException e) {
    		} catch (IOException e) {
    		}
    	}
    
    }
    grazie mille!
    I'm an heartless man at worst, and an helpless one at best

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Dire "mi connetto tramite socket" non vuol dire nulla... quasi tutte le comunicazioni via rete avvengono tramite socket. Quello che serve sapere è con quale protocollo intendi comunicare con il server, cioè... chi c'è dall'altra parte? Un server TELNET? Un server FTP? Un server SSH? Un server HTTP? Un server SMTP? Un server POP/IMAP? Un server NTP? Un server scritto da te che usa un protocollo di comunicazione inventato da te?

    Non con tutti questi tipi è possibile avere qualunque informazione... ad esempio, un server POP/IMAP ti darà informazioni relative alle mail... mai e poi mai ti potrà dire (almeno, non direttamente) che ore sono.


    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
    sorry, dimenticanza mia, il protocollo è il tcp\ip
    I'm an heartless man at worst, and an helpless one at best

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da psyche86
    sorry, dimenticanza mia, il protocollo è il tcp\ip
    Non parlavo del "protocollo di rete" (il 99.9% delle comunicazioni avviene su TCP/IP... sono pochi/particolari quelli che usano UDP), ma del "protocollo di comunicazione". E torna di nuovo la mia precedente domanda: chi c'è in ascolto dall'altra parte?


    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

  5. #5
    allora http è la risposta giusta! dall'altra parte c'è un dispositivo di rilevazione meteo, di cui sto creando il driver in modo che giri sul mio software. devo mandare la richiesta di data e ora dal mio client, e lui mi risponde con un messaggio ascii, che parsifichero in un secondo tempo
    Spero di essermi spiegato!
    I'm an heartless man at worst, and an helpless one at best

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    HTTP... le richieste HTTP possono avvenire in due modi: GET o POST.
    Poco importa, in questo momento, quale dei due modi si aspetta il server dall'altra parte. Ciò che devi conoscere (e lo puoi conoscere solo tu) è il numero di parametri che il server si apsetta, i nomi di questi parametri e i valori da assegnare.

    C'è da dire che per richieste di tipo HTTP è più facile lavorare con l'oggetto URLConnection, piuttosto che con le Socket...

    Supponendo, quindi, che la richiesta sia di tipo GET e avvenga nel seguente modo:

    http://www.tuosito.it/param1=valu1&param2=value2

    Dovrai solo costruire la URL, ottenere la URLConnection e leggere la risposta:

    codice:
    URL url = new URL("http://www.tuosito.it/param1=valu1&param2=value2");
    URLConnection con = url.openConnection();
    
    // Ora vado a leggere ciò che il server mi risponde
    InputStream is = con.getInputStream();
    BufferedReader br = new BufferedReader( new InputStreamReader(in) );
    String linea = null;
    while((linea = br.readLine()) != null) {
       ... // Faccio ciò devo con la linea appena letta
    }
    br.close();
    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

  7. #7
    Grazie mille, ora provo!!
    I'm an heartless man at worst, and an helpless one at best

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.