Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-03-2009, 10:59   #1
m3kka
Junior Member
 
Iscritto dal: Jan 2007
Messaggi: 4
[Java]Non riesco a far parlare i due pc tramite socket

Intanto posto il codice ^^

Codice:
                server = new ServerSocket(7777);
                Socket s1 = server.accept();

                    cport = 8000 + (int)(Math.random() * 100);

                    new ServerDinamico(cport);
                    cPorta = new PrintStream(s1.getOutputStream());
                    cPorta.println(cport);

                    cPorta.close();
                    s1.close();
Questo primo spezzone di codice in sostanza dovrebbe ricevere una richiesta, generare un numero casuale compreso da 8000 e 8100, inizializzare un server utilizzando il numero casuale come porta (attraverso la classe ServerDinamico) e poi comunicare la nuova porta a cui connettersi al client che ha fatto la prima richiesta.

Codice:
public ConnessionePreliminare(InetAddress ip) throws IOException
    {
        Socket s1 = new Socket(ip, 7777);
        BufferedReader porta = new BufferedReader(new InputStreamReader(s1.getInputStream()));

        s2 = new Socket(ip, Integer.parseInt(porta.readLine()));
        porta.close();
        s1.close();
    }
Questa è la classe utilizzata per connettersi al server di cui sopra.

Per qualche motivo a me ignoto tutto funziona meno la comunicazione della porta tra server e client, quindi:

- Viene ricevuta la richiesta dal server
- Il server ne crea un secondo sulla porta randomizzata (che si mette in listening)
- Il server non riesce ad inviare il numero di porta a cui connettersi

Spero di essermi spiegato ^^'' è un pelo contorta come cosa ^^

Ringrazio fin d'ora per qualsiasi aiuto, 'sta cosa mi sta facendo uscire di senno.
m3kka è offline   Rispondi citando il messaggio o parte di esso
Old 07-03-2009, 13:31   #2
morskott
Member
 
Iscritto dal: Jul 2005
Messaggi: 291
tra il cPorta.println(cport); e il cPorta.close(); prova cPorta.flush(); e il client prova con
Codice:
public ConnessionePreliminare(InetAddress ip) throws IOException
    {
        Socket s1 = new Socket(ip, 7777);
        BufferedReader porta = new BufferedReader(new InputStreamReader(s1.getInputStream()));
        Integer portaNuova=Integer.parseInt(porta.readLine());
        System.out.println("la nuova porta risulta "+String.valueOf(portaNuova));
        s2 = new Socket(ip, portaNuova);
        porta.close();
        s1.close();
    }
e vedi se ti stampa quel println
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB
morskott è offline   Rispondi citando il messaggio o parte di esso
Old 07-03-2009, 14:07   #3
m3kka
Junior Member
 
Iscritto dal: Jan 2007
Messaggi: 4
Nulla da fare :_:

Posto il codice completo della classe ProcessoServer (prima avevo ommesso alcuni controlli sulla porta generata e il metodo per bloccare il server):

Codice:
public class ProcessoServer extends Thread {
    private int cport, i = 0;
    public ServerSocket server;
    private Component SezionePrincipale;
    private PrintStream cPorta;
    private int[] porteUsate = new int[100];
    private ScegliPorta valuta;

    @Override
    public void run()
    {
        try {
        while(true) {
                server = new ServerSocket(7777);
                Socket s1 = server.accept();
                if(s1.getInetAddress().toString().equals("/127.0.0.1"))
                {
                    server.close();
                    s1.close();
                    break;
                }
                else {
                    cport = 8000 + (int)(Math.random() * 100);

                    valuta = new ScegliPorta(cport, porteUsate);
                    while(valuta.Check() == false)
                    {
                        cport = 8000 + (int)(Math.random() * 100);
                        valuta = new ScegliPorta(cport, porteUsate);
                    }
                    porteUsate[i] = cport;
                    i++;

                    new ServerDinamico(cport);
                    cPorta = new PrintStream(s1.getOutputStream());

                    cPorta.println(cport);

                    cPorta.flush();

                    cPorta.close();
                    s1.close();
                }
            }
        }
        catch(IOException ex)
        {
           JOptionPane.showMessageDialog(SezionePrincipale, "Errore di connessione all'Interfaccia", "Amove", 0);
        }
    }
    public void rimuoviPorta(int port)
    {
        for(int b = 0; b <= porteUsate.length; b++) {
            if(port == porteUsate[b]) {
                porteUsate[b] = -1;
            }
        }
    }
    public void bloccaServer() throws UnknownHostException, IOException {
        Socket stop = new Socket("127.0.0.1", 7777);
    }
Magari ci sono errori orribili nella classe che io non ho notato O.o

Questa inoltre è la classe ServerDinamico, che si preoccupa di generare il demone in ascolto sulla porta random.

Codice:
public class ServerDinamico {
    private Socket s;
    public FinestraChat fin = new FinestraChat();

    public ServerDinamico(int port) throws IOException
    {
        ServerSocket dserver = new ServerSocket(port);
        s = dserver.accept();
        fin.gestioneSocket(s);
        fin.impostaNick("Anonimo");
        dserver.close();
        fin.setVisible(true);
    }

}
Ecco adesso c'è proprio tutto ^^
m3kka è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Il JPL estende la vita operativa della s...
DAZN Full è in offerta: tutta la ...
GTA 6 su PC potrebbe arrivare prima del ...
Da zero al tracciato in secondi: LibreCo...
Il regista Rian Johnson lancia a 12,99 d...
Microsoft stravolge l'app Sicurezza di W...
Mercato smartphone in caduta libera: -20...
Android 17 QPR3 Beta 3 riporta il blocco...
Le 10 offerte TOP in Amazon del weekend:...
Dyson, doppio crollo su Amazon: purifica...
Il 70% delle imprese non vede effetti de...
HillMiles MileCity1 a 616€: la city e-bi...
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: 16:36.


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