Newsgroup: it.comp.reti.locali
Titolo: UDP

Perchè se apro due socket UDP sulla stessa macchina sulla stessa porta i
byte vengono ricevuti da solo uno dei due client?
Se chiudo l'applicativo che riceve comincia a ricevere l'altro.
C'e' un modo per far ricevere i due socket contemporaneamente?
Grazie

 
- --
==
"Vorrei solo sapere che sei morto.
Cosi', per stare un po meglio."
- -
Per scrivermi una email o avere la mia PGP Key, posta
un messaggio con il seguente soggetto:"REQUEST EMAIL HARTIGAN".
==
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFFEP9XuuxRXtjsR9sRA0r4AJ4+G9uo2+PadzrMF0a3kHvq3QlzqACguQkB
Ul7fzSGX8HTtAnvQubX7v9Q=
=nafx
-----END PGP SIGNATURE-----


Non sono "due socket" e' UN socket (stesso IP, stessa porta).
ciao
Marialaura


Perchè non ha senso quello che faccio? Se ho un servizio su
un server remoto che distribuisce dei byte su protocollo UDP su una 
determinata porta
e voglio che su una macchina ci siano n applicativi sui client che ricevono 
questi dati
non posso farlo???

-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

No, perche' solo un'applicativo puo' occupare tale risorsa.
A livello di programmazione, dovresti fare un programma che si occupa
di prendere questi pacchetti su tale porta e poi di passarli
all'applicativo di competenza gestendo questioni come sequenze,
pacchetti persi, etc etc...
Anche perche' immaginiamo che stai trasferendo un file, questo verra'
spezzato in vari pacchetti, se tu "ipoteticamente" potessi fare come
dici Tu, ai vari programmi arriverebbero parti di questo file e sarebbe
alquanto complicato gestire la ricostruzione di tale file...non credi ?
Quindi, quello che puoi fare e' avere un programma che prende in
esclusiva tale risorsa, ma solo un programma che si occupa della
gestione dei pacchetti che ti arrivano...
Funziona cosi'.
E' come avere una serratura, contemporaneamente ci puoi mettere solo una
chiave per aprirla...non enne assieme.
Capito ?
- --
==
"Vorrei solo sapere che sei morto.
Cosi', per stare un po meglio."
- -
Per scrivermi una email o avere la mia PGP Key, posta
un messaggio con il seguente soggetto:"REQUEST EMAIL HARTIGAN".
==
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFFEVFUuuxRXtjsR9sRA67qAKDBmLzCnfCr3Ft5x8uQRMwfa3RATwCfeSlP
1Ayx+ejB2OzdZ0pYx3q1OMI=
=i06o
-----END PGP SIGNATURE-----


Ma questo avviene solo per UDP? Perchè con TCP questa cosa la faccio 
tranquillamente... 

 tranquillamente... 
Difficilmente credo a questa tua frase perche' la logica non cambia.
Certamente avrai un programma, magari in ottica thread, che una volta
che occupa la porta, gestisce i pacchetti innoltrandoli verso i child.
Sarei davvero curioso di sapere che programmi "fanno" sta porcata.
- --
==
"Vorrei solo sapere che sei morto.
Cosi', per stare un po meglio."
- -
Per scrivermi una email o avere la mia PGP Key, posta
un messaggio con il seguente soggetto:"REQUEST EMAIL HARTIGAN".
==
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFFEWRWuuxRXtjsR9sRAzi9AJ4qDH5xCvTbHv5ufeELNXQHbp0ZxgCeJBVF
C+ymiMUb5UNw02GcRXoqJcE=
=JPpl
-----END PGP SIGNATURE-----

 Sarei davvero curioso di sapere che programmi "fanno" sta porcata.
Dato che i socket si possono aprire in modo NON esclusivo credo che una 
logica
ci sia. Poi dato il concetto sopra citato penso sia LOGICO che se ho un 
servizio che distribuisce
i dati su una porta (e non sono solo file) questi devono essere visibili da 
tutti gli applicativi che ascoltano
anche se risedenti sullo stesso computer.
Ad esempio se i servizi SQL stanno su una porta tal dei tali non è che se io 
apro un socket sul client
che punta su quella porta più nessuno può connettersi a SQL perchè un client 
è ha già aperto un socket
su quella porta. A dire il vero quasi tutti i programmi fanno sta porcata 
come la chiami tu....

 come la chiami tu....
Fanno una cosa diversa, non mi sembri pratico di programmazione di rete
e funzionamento dei protocolli...
- --
==
"Vorrei solo sapere che sei morto.
Cosi', per stare un po meglio."
- -
Per scrivermi una email o avere la mia PGP Key, posta
un messaggio con il seguente soggetto:"REQUEST EMAIL HARTIGAN".
==
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFFEXLJuuxRXtjsR9sRA006AJ4kY0ThIyZh5szH8d67jJUpjgGTwACeI/hO
so+Vu8EomS/3kskvL8VzsHc=
=iotO
-----END PGP SIGNATURE-----

 e funzionamento dei protocolli...
Hai ragione ho poca esperienza in programmazione di rete :-) Cmq ti
ringrazio molto
per le spiegazioni che mi hanno un po' chiarito le idee...
impostero' la cosa impostando random le porte dei client UDP che risiedono
sullo
stesso client.
Grazie ancora! :-)

 stesso client.
Perché non usi TCP e ogni applicativo si apre la *sua* bella connessione
dirett?  Ti puoi permettere di perdere pacchetti usando UDP?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

I pacchetti li puoi perdere anche in TCP...
Quello che forse intendi e' se non interessa la gestesione
della connessione che TCP ha e che UDP non prevede e che se vuoi te
lo devi fare a livello applicativo...
- --
==
"Vorrei solo sapere che sei morto.
Cosi', per stare un po meglio."
- -
Per scrivermi una email o avere la mia PGP Key, posta
un messaggio con il seguente soggetto:"REQUEST EMAIL HARTIGAN".
==
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFFE/1tuuxRXtjsR9sRA6DcAKC4v86o+wrlTydA6LX06go0U19yFwCg0d/I
eDCTMRIMv+ga9kDbkPrx9nQ=
=tCn6
-----END PGP SIGNATURE-----

 lo devi fare a livello applicativo...
Uso UDP perchè ho bisogno di una trasmissione molto veloce....
infatti devo inviare pacchetti da 200 a 500 byte ogni 40 millisecondi
a molti client... preferisco quindi crearmi la connessione UDP e gestire
la connessione a livello applicativo...

 la connessione a livello applicativo...
A questo punto...Multicast!
Per traffico verso molti client...
Pensaci...
Con un semplice pacchetto verso un solo indirizzo ip...
li becchi tutti...
- --
==
"Vorrei solo sapere che sei morto.
Cosi', per stare un po meglio."
- -
Per scrivermi una email o avere la mia PGP Key, posta
un messaggio con il seguente soggetto:"REQUEST EMAIL HARTIGAN".
==
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFFFIopuuxRXtjsR9sRA803AKDA7khK7ep1sj+Rp8RoC/6KTaXqLwCguxDU
THz2LTqUQpeqCBxDuR1biek=
=0iTZ
-----END PGP SIGNATURE-----

Si ci ho pensato e per un periodo l'avevo anche attuata....
Ma ho incontrato un problema che non sono riuscito a risolvere...
Lo scenario dove si svolgono i fatti vede due sotto reti collegate da un
gateway... il multicast si propaga su una sola sottorete... e non sono
riuscito
a propagarla anche alla seconda...:-(

-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

Due le cose, impostare il ttl del pacchetto superiore a 1 se vuoi
che esca dalla subnet in cui viene generata; poi configurare il
multicast sul router per inoltrarlo sulla seconda subnet.
- --
==
"Vorrei solo sapere che sei morto.
Cosi', per stare un po meglio."
- -
Per scrivermi una email o avere la mia PGP Key, posta
un messaggio con il seguente soggetto:"REQUEST EMAIL HARTIGAN".
==
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFFFe0VuuxRXtjsR9sRAz/1AJwPgH/XmVkuzd8yMZbChnF1m1EUoQCg8c6Y
DL9Q4eb1FGqGX8VvHM/C4dQ=
=J4nX
-----END PGP SIGNATURE-----


Appena riesco proverò la dritta che mi hai appena fornito...
Se ho problemi mi faccio sentire!
Sei stato davvero prezioso! Grazie!