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

    problemone client server

    Salve..
    sono nuovo...programmo da poco in java con i server ed i client e volevo sapere come posso fare, a partire dall'actionListener del bottone di un programma "menù", a far partire sia un programma server che uno client; io ho fatto:
    PizzaServer ps=new PizzaServer();
    for(int i=0;i<20000;i++){}
    PizzaClient pc=new PizzaClient();
    ma non mi fa partire nemmeno il server...
    c'è un modo per aprire,praticamente,il dos dal programma java e far partire così server e client?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    La parte di codice che hai postato non è sufficiente a capire come funziona il tuo programma.
    Io posso tirare ad indovinare: server e client sono dei thread? Mi auguro di sì...

    In questo caso non è sufficiente creare le istanze dei thread, ma è necessario anche avviarli utilizzando il metodo start().

    Se il tuo intento, invece, è quello di avviare una classe attraverso il proprio metodo main hai due possibilità:

    1) Avviare la classe su una JVM differente, utilizzando il metodo exec() della classe Runtime

    2) Utilizzare direttamente il metodo main() delle classi (è pubblico e statico, quindi lo puoi invocare direttamente sul nome della classe).


    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
    ciao LeleFT...grazie per la celere risposta;
    mi sono accorto di una piccola cavolata che ho commesso...
    1)il mio server non è un thread, dovrebbe esserlo?
    2)non ho necessità di lanciare il client dalla stessa macchina, quindi dovrei fare solamente quello che hai descritto nel primo punto: sono andato sul sito della sun a cercare i costruttori...
    ho provato ad usare
    exec(String command)
    implementandolo così:
    exec("PizzaServer ps=new PizzaSever()");
    ma il compilatore non riesce a trovare il metodo exec..
    -devo importare qualche package?
    -ho sbagliato la stringa di comando che richiede il metodo?

    grazie ancora per l'interessamento!
    Ciao!!!!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fleapak
    -ho sbagliato la stringa di comando che richiede il metodo?
    No ... hai sbagliato un po' di cose. Innanzitutto non penso che tu abbia bisogno di lanciare un eseguibile o comando esterno (serve a questo la exec() di Runtime!).

    Il tuo server immagino che sia un tipico server a livello TCP in ascolto su una certa porta. Quindi avrai sicuramente usato un java.net.ServerSocket e avrai fatto il classico "loop" con dentro la accept(). Quindi è tutto "bloccante", nel senso che questo loop viene ripetuto indefinitivamente e passa la maggior parte del tempo bloccato nella accept() aspettando la connessione da un client.
    Quindi è bene che tutto questo loop sia in un suo thread a sé stante ... e questo a maggior ragione se il tuo programma ha una interfaccia utente in AWT/Swing.
    Poi ogni volta che la accept ti fornisce un Socket per comunicare con il client, anche qui bisognerebbe gestire la comunicazione in un nuovo thread separato.

    E comunque la tua questione non è chiara in generale ... non è chiaro come hai realizzato (se l'hai già fatto) il server e il client e non è chiaro perché devi avviare il server e il client nella stessa applicazione. In genere il server è una applicazione ... e il client è un'altra applicazione distinta e separata.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ok...ho modificato il server facendolo diventare un thread...

    questo è il codice:

    il.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    PizzaServer ps=new PizzaServer();
    ps.start();
    Cicciput pc=new Cicciput();
    }
    });

    ma il server non parte

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fleapak
    ma il server non parte
    Senza sapere (e vedere) bene come hai fatto questo server è praticamente impossibile dire cosa non va.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    ok...ecco il codice del server:


    codice:
    import java.util.*;
    import java.awt.*;
    import javax.swing.*;
    import java.net.*;
    
    class PizzaServer extends Thread{
       public void run(){
          try{
             ServerSocket ss=new ServerSocket(2323);
             while(true){
                System.out.println("server in attesa di chiamata");
                Socket s=ss.accept();
    	    System.out.println("chiamata acettata");
                //PizzaHandler ph=new PizzaHandler(s);<-- devo ancora realizzare questa classe
             }
          }catch(Exception e){
             JOptionPane.showMessageDialog(null,"Errore di connessione al Client");
          }
       }
       
    }

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fleapak
    ok...ecco il codice del server
    Come hai detto tu, non è completo ma dal punto di vista tecnico è corretto, non vedo nulla di errato nel codice.

    Inoltre che cosa è quel:
    Cicciput pc=new Cicciput();
    ??

    Tieni sempre presente che in quel punto, quando viene invocato il actionPerformed(), si è nel contesto del EDT, ovvero il "event dispatch thread". Che non devi mai bloccare per troppo tempo. Se tu stai impegnando il EDT, non è possibile dispacciare altri eventi o disegnare la interfaccia utente che di conseguenza è "congelata".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    niente...funziona tutto benissimo!!!
    grazie mille a tutti quelli che si sono interessati!

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.