Newsgroup: it.comp.java
Titolo: Da socket a socket

E' possibile far dialogare due oggetti adoperando per entrambi
esclusivamente la classe socket? Oppure è necessario realizzare sempre
una struttura client/server con
Socket da una parte e ServerSocket dall'altra?

 writes:
S> E' possibile far dialogare due oggetti adoperando per entrambi
S> esclusivamente la classe socket? Oppure è necessario realizzare
S> sempre una struttura client/server con Socket da una parte e
S> ServerSocket dall'altra?
Socket ha il metodo connect() ma non accept().
ServerSocket ha accept() ma non connect().
Anche se  usualmente la accept la  fanno i socket  aperti da programmi
server non per questo deve  essere una architettura client server. 
C'è in  questo caso  un po' di  complicazione perché un  processo deve
sapere se  è l'iniziatore o no (il  talk di berkeley usava  un modo un
po' convoluto per scoprirlo).
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione

 ha scritto nel messaggio 
news:1138379281.5...@o13g2000cwo.googlegroups.com...

Ciao!
puoi usare SocketDatagram, ma questa classe non garantisce la QoS del 
servizio... in pratica non hai garanzia che i dati inviati arrivino, che 
arrivino "interi" (il protocollo OSI sotto a tutto potrebbe spezzare i tuoi 
dati in più messaggi, o unire più dati in un unico messaggio, come gli torna 
più comodo) e che arrivino nello stesso ordine in cui tu li hai inviati...
se non hai di questi problemi, tanto di guadagnato, altrimenti devi 
codificare tu il riconoscimento, la gestione e la correzione degli errori... 
e non è una cosa semplice...
in bocca al lupo,
   Ste 

 writes:
SB> puoi usare SocketDatagram, ma questa classe non garantisce la QoS
SB> del servizio...
Non credo che nemmeno il TCP/IP nudo e crudo garantisca una quality of
service.
UDP è connectionless ma molto più  leggero di TCP in quanto non ha nel
suo stack  tutte quelle cose che  citi (sovrapporre lo  stack TCP/IP o
UDP/IP a quello OSI non è  così lineare). Se i due processi sono sulla
stessa macchina o  su macchine in LAN non  congestionata, dovresti non
aver problemi con UDP.


Ad onor del vero un metodo accept() il socket ce l'ha. Piu' che altro
il Socket non è in grado di offrire una porta di comunicazione, come
invece fa il ServerSocket.

 writes:
RN> Ad onor del vero un metodo accept() il socket ce l'ha.
Posso dire che non lo trovo ?
Peraltro  che ricordi,  per una  connessione TCPI/IP  un lato  crea un
socket  e  lo mette  in  liste  (ServerSocket  per Java),  l'altro  si
connette al socket in listen...
Non ho trovato nè in Socket nè in SocketChannel qualcosa che permette
di mettere in listen il socket...


 aver problemi con UDP.
Quando, orgogliosi, ci vantammo di perdere circa 1 pacchetto ogni mezzo 
milione durante trasmissioni UDP, il nostro professore di "reti di 
calcolatori" ci rispose schifato "ma avete una LAN Ethernet, per quanto 
pessima, o una catena di piccioni viaggiatori ?"
-- 
----------------------------------------------------------------------------------
       /)/)		La mia vita è tutta rose e fiori...
      ( '.')
    o(('')('')				... ma io sono allergico !!!

> dovresti non aver problemi con UDP.
SC> Quando, orgogliosi, ci vantammo di perdere circa 1 pacchetto ogni
SC> mezzo milione durante trasmissioni UDP, il nostro professore di
SC> "reti di calcolatori" ci rispose schifato "ma avete una LAN
SC> Ethernet, per quanto pessima, o una catena di piccioni viaggiatori
SC> ?"
"Una  implementazione  di  IP  secondo  la  RFC  1149,  naturalmente!"
dovevate rispondergli... (sperando che abbia humor).
