|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
[JAVA] E' possibile istanziare Enne Server Socket?
Salve a tutti
Come da titolo , è possibile istanziare in maniera dinamica (solo a run time quindi) Enne Server Socket, ognua con porte diverse , sullo stesso pc? Abbiamo provato ad istanziarne tre , con lo stesso nome ma con porte diverse... funziona solo l'ultima.. Grazie ciao
__________________
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Up
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Posta un esempio
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Premetto che ciò che voglio realizzare siano Enne serversocket (enne definito in input dall'utente).
Allora , vado a memoria non ho il codice sottomano: Codice:
Pippo = new ServerSocket(1000); Pippo = new ServerSocket(2000); Pippo = new ServerSocket(3000); Ho fatto un gran confusione lo ammetto Leggendo e chiedendo in giro ho visto che qualcosa di utile al mio scopo potrebbe venire dalle liste , più precisamente da questo http://www.dia.uniroma3.it/~cabibbo/...inkedList.html Dovrebbe andar bene , che ne pensate? Ogni singola serverSocket sarà poi identificata grazie al metodo getlocalport , dato che ogni Socket controlla una e una sola porta...
__________________
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se fai in quel modo solo la terza rimane attiva, le altre due vengono distrutte dal garbage collector.
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
Scusa creati un array di servesocket, così risolvi
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Il fatto è che dovrei istanziarle dinamicamente , quindi credo che una struttura dati array non vada bene...
Per questo propendevo verso una Lista Grazie ad entrambi comunque
__________________
|
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
@EDIT: o meglio, leggendo questo: Quote:
Codice:
// inizializzazione hashmap: nessun elemento HashMap<Integer, ServerSocket> socketMap = new HashMap<Integer, ServerSocket>; // aggiungo un elemento ServerSocket ss = new bla bla... ... Integer socketID = new Integer(ss.getLocalPort()); socketMap.put(socketID , ss)); // recupero un ServerSocket usando la local port come chiave ServerSocket aSocket = socketMap.get(socketID); ... // controllo se nella hashMap c'è un ServerSocket mappato con una chiave specifica Interger specificPort = new Integer(1000); boolean keyIsPresent = socketMap.containsKey(specificPort ); ... // recupero tutte le chiavi nella hashMap (tutte le localPort mappate) Set<Integer> allPorts = socketMap.keySet(); ... // recupero tutti i valori nella hashMap (tutti i ServerSocket mappati) ArrayList<ServerSocket> allSocket = socketMap.values(); ...
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 30-01-2009 alle 11:25. |
||
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ciao fero86, ho letto adesso, nel frattempo stavo editanto il post.
A questo punto per me meglio un hashmap.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Quote:
Ciao e grazie per i consigli Posso chiederti perchè preferisci un hash map ad un linkedlist? Saluti P.s: Grazie a tutti quelli che mi hanno risposto EDIT: per hashmap ti riferisci a questo? http://www.nocturnal.it/njl/it/hashmap.html
__________________
Ultima modifica di Dyd87 : 30-01-2009 alle 11:47. |
|
|
|
|
|
|
#12 | |||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Fa parte del Collections Framework incluso nel JDK Quote:
Quote:
Mi sembra di capire che la logica della collezione di ServerSocket che vorresti non è quella di identificare uno specifico ServerSocket in base all'ordine con cui è stato inseriro nella collezione, ma in base alla local port a cui fa riferimento; in modo quindi indipendente dalla sua posizione nella collezione.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 30-01-2009 alle 12:25. |
|||
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Quote:
Non mi interessa la posizione che assumerà la Server Socket , ma esclusivamente il valore della porta , nullaltro... Altra domanda: Il mio amico , con cui sto facendo questo progetto , mi ha detto che non è possibile (testato da lui) istanziare ServerSocket dandogli in input una variabile intera , esempio: Codice:
Int pippo = 1000; ServerSocket ss = new ServerSocket (pippo); Grazie ciao
__________________
|
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
non mi pare a vedere la documentazione.. quell'int con la i maiuscola l'hai messo solo qui o anche nel tuo codice?
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
C'è un errore:
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Scusate ho scritto male
In realtà la int sarebbe ovviamente scritta con la i minuscola , il problema è un altro(ho sbagliato a scrivere)... Codice:
int pippo; ... ... (verrà definitito in queste righe di codice , che sia da input o in maniera random...) ... ServerSocket ss = new ServerSocket (pippo); Saluti
__________________
|
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 198
|
Immagino tu stia usando questo:
http://java.sun.com/javase/6/docs/ap...verSocket.html In particolare a te interessa il secondo costruttore. Come chiede un ingresso un intero, quindi non dovrebbero esserci problemi Per quanto riguarda la struttura dati, la HashMap è nettamente superiore in questo caso rispetto a Linked e ArrayList, in quanto sia inserimento che ricerca sono O(1) (vuol dire tempo costante, cioè grossomodo indipendente dalla quantità di Socket, in parole spicciole). Anche se dubito arriverai a istanziarne un numero tale da poter discriminare in prestazioni le varie soluzioni Ultima modifica di Mesh89 : 30-01-2009 alle 15:49. |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Quote:
Adesso proveremo poi vi faremo sapere , se ho problemi posto qui , grazie ancora a tutti
__________________
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Allora...rieccomi di nuovo
Tramite l'utilizzo della HashMap le varie ServerSocket sono state istanziate , perfettamente direi... E' sorto però un altro problema: dato che i miei Server devono stare sempre in ascolto su queste porte , ho creato un metodo Listen che , tramite un ciclo infinito (while(true)) , provvede allo scopo. Dove sta il problema? Che solamente la prima ServerSocket su cui verrà applicato il metodo Listen resterà in ascolto , le altre dovranno aspettare la terminazione di quest'ultima... Come fare quindi per istanziare più ServerSocket che stiano in ascolto , contemporaneamente , su più porte , tante quante i Server? P.s: Il trattamento della connessione Server/Client è gestito già tramite thread , in modo che più CLient possano connettersi al Server. Questo però non sembra aver risolto il problema...
__________________
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Puoi postare gli spezzoni di codice relativi a questo:
Quote:
Sarebbero d'aiuto per capire esattamente quale è il problema.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:36.




















