|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
[JAVA]classe ServerSocket
come faccio, utilizzando la classe ServerSocket, ad "ascoltare" su + porte senza dover avviare + volte il singolo programma ?
...ho provato utilizzando i thread e non ma il metodo server.accept(); che serve ad accettare le connessioni in ingresso mi blocca il ciclo for per la creazione dei thread al primo e si mette subito in attesa!
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
hai già trovato la soluzione, devi utilizzare i thread
probabilmente lo hai fatto nel modo sbagliato |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
Codice:
package servlet;
public class mainClass {
static Thread[] tcpServer = new Server[3];
public static void main(String[] args) throws Exception {
for(int i=28000; i<28003;i++) {
tcpServer[i-28000] = new Server(i);
tcpServer[i-28000].start();
System.out.println(i); // <-- ciclo bloccato, infatti il println non viene eseguito
}
}
}
Codice:
package servlet;
import java.net.*;
import java.io.*;
public class Server extends Thread {
int port;
public Server(int port) {
System.out.println(port);
this.port = port;
setDaemon(true);
try {
ServerSocket server = new ServerSocket(port);
// la accept e' bloccante fino all'arrivo di una connessione
Socket s = server.accept();
System.out.println("... accepted:"+s);
InputStream i=s.getInputStream();
OutputStream o=s.getOutputStream();
System.out.println(port);
while(true) {
int c = i.read();
System.out.print((char)c);
o.write(c);
}
} catch(Exception e) { e.printStackTrace(); System.out.println(e); }
}
}
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
Codice:
package servlet;
import java.net.*;
import java.io.*;
public class Server extends Thread {
int port;
public Server(int port) {
System.out.println(port);
this.port = port;
setDaemon(true);
}
public void run() {
try {
ServerSocket server = new ServerSocket(port);
// la accept e' bloccante fino all'arrivo di una connessione
Socket s = server.accept();
System.out.println("... accepted:"+s);
InputStream i=s.getInputStream();
OutputStream o=s.getOutputStream();
System.out.println(port);
while(true) {
int c = i.read();
System.out.print((char)c);
o.write(c);
}
} catch(Exception e) {
e.printStackTrace(); System.out.println(e);
}
}
}
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
ps: ....sai mica se è possibile mandare singoli Bit con i socket del java?
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- Ultima modifica di Frank1962 : 14-02-2004 alle 21:37. |
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
Che io sappia, non si può.
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
C'è qualcosa che mi sfugge.
Vuoi mandare un bit o vuoi mandare un boolean? |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
ps: però mi piacerebbe sapere "come" viene mandato .....se come bit o come byte
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
La rappresentazione interna di un boolean in Java è un intero (il tipo non è specificato).
La classe DataOutputStream permette di inviare boolean, che vengono "impacchettati" in byte (1 boolean = 1 byte). |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:58.



















