|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
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();
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();
}
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. |
|
|
|
|
|
#2 |
|
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();
}
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB |
|
|
|
|
|
#3 |
|
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);
}
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);
}
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:49.



















