Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-11-2003, 19:54   #1
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
server e client in Java...Help

allora ho questo server...

Codice:
import java.io.*;
import java.net.*;

public class server {
    public static void main(String args[]) {
        ServerSocket echoServer = null;
        String line;
        DataInputStream is;
        Socket clientSocket = null;
        PrintStream os = null;
        try {
           echoServer = new ServerSocket(9999);
        }
        catch (IOException e) {
           System.out.println(e);
        }

try {
           clientSocket = echoServer.accept();
           is = new DataInputStream(clientSocket.getInputStream());
           os = new PrintStream(clientSocket.getOutputStream());

           while (true) {

             line = is.readLine();
             System.out.print(line);
             os.println("c");
		 
           }

        }
catch (IOException e) {
           System.out.println(e);
        }
    }
}
e questo è il client
Codice:
import java.io.*;
import java.net.*;
import javax.swing.*;

public class client1 {
    public static void main(String[] args) {
        Socket smtpSocket = null;
        PrintStream os = null;
        DataInputStream is = null;
        String mess;

        try {
            smtpSocket = new Socket("localhost", 9999);
            os = new PrintStream(smtpSocket.getOutputStream());
            is = new DataInputStream(smtpSocket.getInputStream());
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: hostname");
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to: hostname");
        }
if (smtpSocket != null && os != null && is != null) {
            try {
     os.println("ciao");
               String responseLine;
                while ((responseLine = is.readLine()) != null) {
                    System.out.println("Server: " + responseLine);
                    if (responseLine.indexOf("Ok") != -1) {
                      break;
                    }
                }

                os.close();
                is.close();
                smtpSocket.close();
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " + e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }
}
il mio problema è che dal client a inviare al server riesco ma non riesco a ricevere dal client ciò che gli invia il server...come mai??cosa c'è che non va?
grazie
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 09:34   #2
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Il codice mi pare corretto... Personalmente l'ho provato e funziona... che jdk usi?? Che Sistema Operativo?
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 13:31   #3
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Quote:
Originariamente inviato da cn73
Il codice mi pare corretto... Personalmente l'ho provato e funziona... che jdk usi?? Che Sistema Operativo?
uso la 1.4.2_01....
infatti anche a me sembra corretto...
non è che c'è un bug in questa versione???dubito però...
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 13:59   #4
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
Lo ho compilato e mi funziona

Cmq con qella versione il metodo readLine() di java.io.DataInputStream è deprecato.

Prova a sostituirlo.

Nel tutorial delle API di Sun c'è scritto di sostituire

DataInputStream d = new DataInputStream(in);

con

BufferedReader d = new BufferedReader(new InputStreamReader(in));

Ultima modifica di Molz : 12-11-2003 alle 14:03.
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 16:07   #5
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Ovviamente lanci il client e il server da due console separate giusto?
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 16:38   #6
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Quote:
Originariamente inviato da Molz
Lo ho compilato e mi funziona

Cmq con qella versione il metodo readLine() di java.io.DataInputStream è deprecato.

Prova a sostituirlo.

Nel tutorial delle API di Sun c'è scritto di sostituire

DataInputStream d = new DataInputStream(in);

con

BufferedReader d = new BufferedReader(new InputStreamReader(in));
l'avevo lettoanche io questo ma non cambiava niente...cmq dal client se provo a connettermi ad un altro server mi legge ciò che mi manda il server...non va solo dal mio client...
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 16:39   #7
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Quote:
Originariamente inviato da cn73
Ovviamente lanci il client e il server da due console separate giusto?
si ovviamente uso due console diverse
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 17:58   #8
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
firewall??
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 18:11   #9
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Quote:
Originariamente inviato da cn73
firewall??
no,non ho firewall
non riesco proprio a capire perchè non funziona ho riprovato ancora con BufferedReader ma non va...
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2003, 20:56   #10
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Non so, prova a cambiare porta! e mettere della System.out di debug x capire qual è il pezzo che nn esegue...
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2003, 16:26   #11
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Quote:
Originariamente inviato da cn73
Non so, prova a cambiare porta! e mettere della System.out di debug x capire qual è il pezzo che nn esegue...
niente non va nemmeno cambiando la porta...che System.out potrei mettere?
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2003, 16:43   #12
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Una cosa del genere:

Codice:
import java.io.*;
import java.net.*;
import javax.swing.*;

public class MyClient {
    public static void main(String[] args) {
        Socket smtpSocket = null;
        PrintStream os = null;
        DataInputStream is = null;
        String mess;

        try {
            smtpSocket = new Socket("xxxx", 10000);
            os = new PrintStream(smtpSocket.getOutputStream());
            is = new DataInputStream(smtpSocket.getInputStream());
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: hostname");
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to: hostname");
        }
			if (smtpSocket != null && os != null && is != null) {
            try {
     						os.println("Messaggio al server: mi sono collegato!");
               	String responseLine;
                while ((responseLine = is.readLine()) != null) {
                    System.out.println("Server: " + responseLine);
                    if (responseLine.indexOf("Ok") != -1) {
                      break;
                    }
                }

                os.close();
                is.close();
                smtpSocket.close();
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " + e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }
}
e poi

Codice:
import java.io.*;
import java.net.*;

public class MyServer {
    
    public static void main(String args[]) {
        
        ServerSocket echoServer = null;
        String line;
        DataInputStream is;
        Socket clientSocket = null;
        PrintStream os = null;
        try {
           echoServer = new ServerSocket(9999);
           System.out.println("Creato il ServerSocket: " + echoServer);
        }
        catch (IOException e) {
           System.out.println(e);
        }

				try {
           clientSocket = echoServer.accept();
           System.out.println("Creato il ClientSocket: " + clientSocket);
           is = new DataInputStream(clientSocket.getInputStream());
           os = new PrintStream(clientSocket.getOutputStream());

           while (true) {

             line = is.readLine();
             System.out.print(line);
             os.println("Benvenuto client " + clientSocket);
		 
           }

        }
				catch (IOException e) {
           System.out.println(e);
        }
    }
}
Riporta esattamente quanto viene scritto in console!
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2003, 18:39   #13
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
questo è il client Server: Benvenuto client Socket[addr=/indirizzoIp,port=1365,localport=9999]
e questo il server
Creato il ServerSocket: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9999]

Creato il ClientSocket: Socket[addr=/indirizzoIp,port=1365,localport=9999]
Messaggio al server: mi sono collegato!
quindi sembrerebbe funzionare!
perchè il mio non andava?!
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2003, 20:01   #14
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Veramente io ho copiato ed incollato il tuo aggiungendo delle System.out
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2003, 20:20   #15
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
Quote:
Originariamente inviato da cn73
Veramente io ho copiato ed incollato il tuo aggiungendo delle System.out
mah....è un mistero
vabbè tutto è bene ciò che finisce bene
grazie!
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2003, 17:53   #16
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
due domande
allora ho provato a fare una cosa così
line = is.readLine();
if (line == "ciao"){
System.out.print(line);
os.println("ciao client ");
}

però nn funziona...come mai?non posso fare il confronto fra stringhe in questa maniera??

un'altra cosa...come mai se io vado a inviare con os.println quando lo stampo dal server nn va a capo??
grazie
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2003, 22:33   #17
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
UP
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2003, 23:18   #18
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
Quote:
Originariamente inviato da SteR9
due domande
allora ho provato a fare una cosa così
line = is.readLine();
if (line == "ciao"){
System.out.print(line);
os.println("ciao client ");
}

però nn funziona...come mai?non posso fare il confronto fra stringhe in questa maniera??

un'altra cosa...come mai se io vado a inviare con os.println quando lo stampo dal server nn va a capo??
grazie
la stringa non è un tipo di dato primitivo quindi non puoi fare il confronto con == ma devi usare dei metodi. la classe String ne ha uno che si chiama equals

s.equals("ciao") restituisce true se la variabile s è "ciao" e false negli altri casi
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2003, 10:51   #19
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Scusa non mi connettevo da un po'! La soluzione ti è stata già postata... Il tuo è un errore comune, non preoccuparti
La classe String offre numerosi metodi, dai un occhio alla documentazione (se l'avessi fatto non avresti postato questa domanda )

Approfitto per spiegarti perchè non funziona il confronto con ==.

String mia_stringa = "Marco".

quando fai questa dichiarazione viene allocata una zona di memoria con un certo indirizzo, puntata da mia_stringa. Praticamente mia:stringa è una variabile che contiene un valore numerico che indica la zona di memoria che contiene "Marco".

Se tu fai il cofronto mia_stringa == "Marco" ti darà quindi sempre false!

Lo stesso se dichiari

String mia_stringa2 = "Marco" e poi fai il confronto

mia_stringa2 == mia_stringa

diverso se tu dichiari:

String mia_stringa2 = mia_stringa.

Questo perchè assegni al puntatore mia_stringa2 lo stesso calore che contiene mia_stringa e punteranno alla stessa zona di memoria.
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2003, 17:01   #20
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
avevo già provato con equals...ma nn va...

Codice:
while (true) {
             line = is.readLine();
             if ( line.equals("ciao") == true){
               System.out.print(line);
               os.println("Benvenuto client " + clientSocket);
             }
}
ho provato sia con = che == ma nn va...con == compila ma non va mentre con = mida errore in compilazione...
dove sbaglio??
SteR9 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Le sonde spaziali ESA ExoMars e Mars Exp...
Roscosmos: static fire per i propulsori ...
Alcune partite NBA saranno trasmesse in ...
Intel Core 13000 e 14000 aumentano uffic...
Gemini sta per arrivare in Google Maps: ...
2 minuti per vedere le 27 offerte imperd...
Ray-Ban Meta Display: tecnologia sorpren...
Un mini PC a prezzo stracciato, non cerc...
Al via i coupon nascosti di ottobre: qua...
Ferrari Elettrica si aggiorna solo in of...
Doppio sconto sugli smartphone top Xiaom...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:02.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v