2014-12-15 13 views
5

So che per TCP, possiamo avere un'unica applicazione in ascolto su una singola porta alla volta. Ora, se disponevi di 2 schede di rete, potresti avere un'applicazione in ascolto sul primo IP e la seconda sul secondo IP utilizzando lo stesso numero di porta.Verificare la porta in uso quando ci sono più interfacce

Ora in questo caso Se devo controllare se una porta particolare è in uso, come faccio?

La mia intenzione è che una porta debba essere utilizzata da una sola applicazione anche se ci sono più interfacce. Va bene se elencho tutte le interfacce e leghiamo con il numero di porta con tutte quelle interfacce in un ciclo, o c'è un modo migliore per fare questo controllo.

risposta

5

So che per TCP, possiamo avere un'unica applicazione in ascolto su una singola porta alla volta.

Eccetto quanto indicato di seguito.

Ora se si dispone di 2 schede di rete, è possibile che un'applicazione venga ascoltata sul primo IP e la seconda sul secondo IP utilizzando lo stesso numero di porta.

Corretto.

Ora in questo caso Se devo controllare se una porta particolare è in uso, come faccio?

Vedere di seguito.

La mia intenzione è una porta dovrebbe essere utilizzata la mia unica applicazione anche se ci sono più interfacce. Va bene se elencho tutte le interfacce e leghiamo con il numero di porta con tutte quelle interfacce in un ciclo, o c'è un modo migliore per fare questo controllo.

Basta associare a 0.0.0.0:port. In Java significa un numero di InetAddress nullo e un numero di porta diverso da zero. Se ci sono applicazioni in ascolto su interfacce specifiche e lo stesso numero di porta, si otterrà un BindException. Viceversa, se sei il primo, impedirai a qualsiasi altra applicazione di collegarsi a quella porta in alcun modo.

+0

Immagino che questo riguardi solo l'indirizzo IPv4 ... e se ci fosse un indirizzo IPv6? posso vedere qualsiasi esempio pure – Vijay

+0

Un 'InetAddress' nullo funziona per IPv6 e IPv4 in Java. Non so cosa ti induca a pensare diversamente. – EJP

+0

Ho appena letto qui http://stackoverflow.com/a/11110685/134713 e sto ottenendo qualche dubbio su ipv6 – Vijay