OVH Cloud OVH Cloud

Comment lister les sockets ouverts

4 réponses
Avatar
muslidrikk
Bonjour,
J'ai une appli java dans laquelle un certain nombre de sockets sont
ouverts.
Ces sockets sont ouverts par une API de haut niveau que j'utilise, et
qui ne me permet pas d'avoir acc=E8s directement aux sockets ouverts.
Comment est-il possible d'avoir acc=E8s aux sockets ouverts dans mon
appli? C'est =E0 dire par exemple obtenir une liste de Socket ou de
FileDescriptor ou je ne sais quoi... Y-a-t-il une API java.net ou autre
qui me permettrait de faire =E7a?
Merci d'avance
Muslidrikk

4 réponses

Avatar
Anonyme
"muslidrikk" wrote in message
news:
[...] Ces sockets sont ouverts par une API de haut niveau que j'utilise,
et
qui ne me permet pas d'avoir accès directement aux sockets ouverts.
[...]


Honnetement, je n'en sais rien (donc desole de polluer ton fil ;)), mais
si une telle methode existe, ca me semble casser le principe objet
d'encapsulation.

Avatar
Raphael Tagliani
Honnetement, je n'en sais rien (donc desole de polluer ton fil ;)), mais
si une telle methode existe, ca me semble casser le principe objet
d'encapsulation.


? en quoi?

Par contre, la façon de connaître les sockets occupés varie d'un système
à l'autre. Il doit exister des bibliothèques pour ça, désolé de ne pas
pouvoir t'aider mieu que ça...
En attendant une vraie solution, il te reste la méthode horrible:
un gros for(...) avec des essai d'ouverture de connexion => une erreur
est lancée si le socket est utilisé.
Mais j'ai honte de doner une solution aussi ignoble.
Tiens, d'ailleurs je vais m'immoler, ça m'apprendra!

Avatar
Anonyme
"Raphael Tagliani" wrote in message
news:
Honnetement, je n'en sais rien (donc desole de polluer ton fil ;)), mais
si une telle methode existe, ca me semble casser le principe objet
d'encapsulation.


? en quoi?



Parce que si son API de haut niveau ne lui donne pas accès à la Socket
sous-jacente, j'en déduis que l'accessibilité de ce champ est private et
qu'il n'existe pas de getter. S'il existe néanmoins un mécanisme pour
retrouver la Socket, (par exemple une bidouille "système" pour récupérer les
Sockets ouvertes, ou je-ne-sais-quoi-d'autre), ce serait une rupture du
principe d'encapsulation.


Avatar
Anonyme
"Raphael Tagliani" wrote in message
news:
Par contre, la façon de connaître les sockets occupés varie d'un système à
l'autre. Il doit exister des bibliothèques pour ça, désolé de ne pas
pouvoir t'aider mieu que ça...
En attendant une vraie solution, il te reste la méthode horrible:
un gros for(...) avec des essai d'ouverture de connexion => une erreur est
lancée si le socket est utilisé.
Mais j'ai honte de doner une solution aussi ignoble.
Tiens, d'ailleurs je vais m'immoler, ça m'apprendra!


Par ailleurs, il me semble que ta solution "horrible" ne permet que de
lister les ports occupés ou non, et si je comprends bien la demande du
posteur initial, ce qu'il cherche c'est à récupérer les objets Socket. Mais
peut être me trompe-je...