Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: [java] socket

  1. #1

    [java] socket

    Ciao, sto realizzando una chat in java che utilizza i socket : pertanto ho creato le mie due classi una lato server ceh utilizza ServerSocket e l'altra Client che utilizza la classe Socket.
    Naturalmente devo mettere in attesa il ServerSocket su una determinata porta.
    Ho uno spazio web gratuito del tipo www.miosito.server.it : come faccio a lanciare la classe mioServer (che utilizza la ServerSocket) che deve restare in attesa ?
    Voglio dire (mi spiego meglio) che se io avessi accesso al Server mi basterebbe scrivere "java mioServer" sul prompt ms-dos e la classe parte e si mette in attesa...ma non avendo la possibilità di accedere alla linea di comando come faccio ?

    Spero di essermi spiegato bene (per quanto riguarda la classe lato Client nessun problema...la metto sotto forma di applet).

  2. #2
    Non puoi lavorare così.
    Prima di tutto devi implementare un programma lato server che per mezzo di thread sia sempre in ascolto sul socket che hai scelto. Ad ogni connessione il thread lancerà una nuova classe che gestirà la comunicazione con il client arrivato. Alla sconessione tale classe deve cadere.
    Un altro problema che potresti avere è il programma 'chat server' deve essere in esecuzione proprio sul server 'miosito.server.it'. Infatti alle applet sono permesse unicamente conessioni con il server dalle quale sono state caricate.

    Che protocolli usi? Tcp, udp, jrmi, iiop...

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    penso che quello che gli hai detto è cio che sta facendo; il fatto è che non so se un servizio di spazio web (magari pure gratuito) permetta di eseguire un'applicazione server in java; probabilmente si puo fare in jsp,


  4. #4
    Ti faccio un esempio (forse non mi sono spiegato bene)

    questo è il codice che girerà sul server :

    codice:
    import java.net.*; 
    import java.io.*;
    public class Server1 
    {
     public static void main(String args[])
     {
      Socket cs = null; 
      ServerSocket ss = null;
      int numero = 1;
      try 
      {
       ss = new ServerSocket(11111);
       while (true) 
       { 
        cs = ss.accept();
        PrintWriter pw = new PrintWriter(cs.getOutputStream(),true);
        pw.println("Nuovo numero: " + numero);
        numero++; 
        pw.println("Stop");
        pw.close(); 
        cs.close();
       }
      }
      catch (Exception e)
      {
       System.err.println(e); 
      }
     }
    }
    e questo il codice lato client

    codice:
    import java.net.*; 
    import java.io.*;
    
    public class Client1 
    {
     public static void main(String args[]){
     Socket s = null;
     try 
     {
      s = new Socket("localhost",11111);
      BufferedReader r =
      new BufferedReader( new
      InputStreamReader(s.getInputStream()));
      String line;
      while((line=r.readLine())!=null )
      {
       System.out.println(line);
       if (line.equals("Stop")) break; 
      }
      r.close(); 
      s.close();
     }
     catch (UnknownHostException e)
     {
      System.err.println("Host unknown");
     } 
     catch (Exception e)
     { 
      System.err.println(e);
     }
    }
    naturalmente una volta ottenuti i .class sul server verrà lanciato Server1 "java Server1" mentre sul client "java Client1"

    per ogni client verrà visualizzato in output un numero crescente (il numero delle connessioni) nel seguente modo :

    D:\esercizi>java Cliente1
    Nuovo numero: 1
    Stop
    D:\esercizi>java Cliente1
    Nuovo numero: 2
    Stop
    D:\esercizi>java Cliente1
    Nuovo numero: 3
    Stop

    ora mi chiedevo io : il file Client1.java posso trasformarlo in un'applet e qui non ci sono problemi

    Per quanto riguarda la classe Server1 questa deve essere sempre in esecuzione sul server : cioè se io avessi accesso fisicamente alla macchina dovrei lanciare il Webserver (come faccio sul mio pc in locale con apache) e digitare java Server1

    Ora io ho uno spazio su altervista del tipo www.miosito.altervista.org come faccio a lanciare Server1.class contenuta nel mio spazio per metterla in attesa di connessioni client se non posso digitare java server1 sulla console del server che ospita il mio sito ? (questo mi serve per realizzare una chat java)

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da giuseppe sicari
    Ora io ho uno spazio su altervista del tipo www.miosito.altervista.org come faccio a lanciare Server1.class contenuta nel mio spazio per metterla in attesa di connessioni client se non posso digitare java server1 sulla console del server che ospita il mio sito ? (questo mi serve per realizzare una chat java)
    Non mi sono occupato direttamente di questo aspetto, ma io a intuito direi che non lo puoi fare, tanto piu che hai uno spazio gratuito...in pratica dovresti eseguire un tuo programma su un server, mi sembra molto difficile che diano questa possibilità...in genere offrono solo uno spazio web, che significa dello spazio fisico su un hard disk in cui mettere i tuoi file che possono esere raggiunti per mezzo del loro server, mentre tu vuoi eseguire sulla loro macchina un tuo server, perche quello che hai fatto, per quanto semplice, è un server a tutti gli efffetti... Pee realizzare una chat su web probabilmente puoi usare un linguaggio di scripting lato server, e nel caso specifico jsp (java server pages), ma devi avere uno spazio su un server che supporti jsp. Se poi qlcuno sa che invece si puo fare ci illumini...


  6. #6
    si ma io ho già realizzato una chat in php ... (col reload automatico che da molto fastidio) volevo passare ad una chat in java senza copiare chat di altri siti ... mi chiedevo se forse in php esisteva qualche istruzione che permettesse di lanciare un programma ... un'istruzione del tipo esegui("java Server1") ma ne dubito ... cmq aspetto chiarimenti

  7. #7
    Secondo me il metodo di Giuseppe Sicari è ok.

  8. #8
    in php esiste eccome una funzione per lanciare altri processi,
    mi pare sia exec() o simile. il punto è che dubito fortemente che avrai i permessi per farlo
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

  9. #9
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    ma chi vi dice che sul server ci sia jdk funzionante? ma io la edo molto improbabile come cosa...anche semplicemente per motivi di sicurezzza...dare la prossibilita di eseuire sulla makkina del server proprie applicazioni...

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Da quel che ne so io per poter fare ciò che intendi devi possedere un servizio di WEB HOUSING e non di WEB SERVICES... praticamente non ti basta avere un dominio da qualche parte (come aruba), ma devi poter avere accesso alla macchina (magari via telnet o qualche altro terminale) per poter lanciare il programma.


    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

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