Newsgroup: it.comp.java
Titolo: Socket

Salve, e la prima volta che scrivo in questo newsgroup e lo faccio perche ho
un problema che non riesco proprio a risolvere!
Sto' cercando di scrivere un gioco che dovrebbe girare in rete. Tutto e
andato bene fino a quando non ho deciso di aggiungere il multiplayer...
Il gioco e un'applet, e la parte a singolo giocatore funziona benissimo;
praticamente tu ti colleghi, il browser carica la pagina e poi puoi giocare.
Il problema e venuto fuori quando ho tentato di aggiungere il codice per
collegare l'applet al server che ho scritto per gestire il multigiocatore!
In pratica, prima ho scritto il server, poi l'ho testato con una
applicazione java stand-alone; visto che tutto funzionava ho trasportato il
codice dell'applicazione stand-alone nell'applet, solo che su ogni browser
in cui l'ho provata, genera una eccezione di sicurezza e non si collega con
il server. Non riesco proprio a capire dove ho sbagliato, anche perche' ho
guardato altri programmi che usano i socket nelle applet e sembrano
perfettamente identici al mio... boh
Se qualcuno ha qualche idea su come far funzionare questa cavolo di applet,
mi farebbe un grosso favore!!!
Grazie a tutti e scusate il disturbo.. :)

l'applicazione server e il server web devono risiedere sullo stesso host per
funzionare... Se poi non č questo devi cercare di essere meno vago perchč
cosě non saprei aiutarti...
ginomi
ginomi...@iname.com
http://ginomi.hypermart.net

...

L'eccezione di sicurezza viene generata dal browser e non dall'applicazione
perchè il Java Security Model è differente nei 2 casi.
Puoi, per risolvere il problema:
1 - Firmare digitalmente l'applet.
2 - Abbassare il livello di sicurezza del tuo browser :-(
3 - Non usare le chiamate che generano l'eccezzione (ricordati che puoi
scrivere solo sull'HD del computer da cui è stata letta l'applet e non
vice-versa).
Se non riesci a sistemarlo lo stesso, mandami lo spezzone di codice
incriminato a 
cal...@tiscalinet.it
 e vedrò cosa posso fare ;-)
Salutazioni.

                 Encoding: x-uuencode
  ho provato le tue classi e cambiando temp.java:33 in
t=InetAddressGetbyName("localhost"); funziona anche dal browser.
prova magari in remoto a vedere cosa succede.
Ciao


Mi dice che il metodo InetAddressGetbyName(java.lang.String) not found in
class temp
In poche parole non posso mettere una stringa come paramentro, ma tu come
hai fatto?
Scusate se vi rompo, ma è una cosa importante!



Scusate, avevo sbagliato a scrivere... cmq da me il prob. persiste...
Da te, il server, cosa ti da come localhost? Da me scrive 
0.0.0.0/0.0.0.0
5000
è giusto?

 è giusto?
  a me da 127.0.0.1 porta 5000 o 127.0.0.2 porta 5000 (Linux )
Che cosa usi ?
Windows 95?
secondo me e' un problema di come risolve i nomi windows 95 .
In particolare di come risolve "localhost".
Non saprei come aiutarti , prova a chiedere su un gruppo di programmazione per
windows
Ciao

 wrote in message
374916A1...@excite.com...


Qualche anima pia sa dirmi il perche' 'sta robba non va?
Per provarla compilate, fate partire la classe Server in una finestra
terminale e poi la classe Client in un altra. I due programmi dovrebbero
comunicare via tcp e il server dovrebbe stampare cio' che il client gli
manda (ovvero "ciccina"),  mentre il client dovrebbe stampare cio' che il
server gli manda (ovvero  "caccona").
I due programmi non terminano e rimangono in attesa indefinita sulla
istanziazione di in e out.
Vacca maiala, perche'??????????????????????
Uso il jdk 1.2.0 sotto Nt 4 SP4
import java.io.*;
import java.net.*;
class Server
{
    public static void main(String argv[]) throws Exception
    {
        Socket socket = new ServerSocket(1234).accept();
        BufferedReader in  = new BufferedReader(new InputStreamReader
(socket.getInputStream()));
        BufferedWriter out = new BufferedWriter(new
OutputStreamWriter(socket.getOutputStream()));
        String s=in.readLine();    System.out.println(s);
        out.write("caccona");      out.flush();
        out.close();
        in.close();
    }
}
class Client
{
    public static void main(String argv[]) throws Exception
    {
        Socket socket = new Socket ("127.0.0.1",1234);
        BufferedReader in  = new BufferedReader(new InputStreamReader
(socket.getInputStream()));
        BufferedWriter out = new BufferedWriter(new
OutputStreamWriter(socket.getOutputStream()));
        out.write("ciccina");       out.flush();
        String s=in.readLine();     System.out.println(s);
        out.close();
        in.close();
    }
}

beh...secondo me non puoi istanziare socket ed al tempo stesso chiamare il
metodo accept...prova a farlo in due tappe distinte...prima l'istanziazione,
poi le due variabili in e out e alla fine socket.accept()...ma puó anche
darsi che ti stia dicendo un monte di cavolate...:)
ciao
nico
