SORU
20 NİSAN 2010, Salı


Ne kadar kullanılabilir bir bağlantı noktası bulmak için?

Bir bağlantı noktası dinlemek olan bir server kurmak istiyorum. Port açıkça belirtmek yaratır. Ama otomatik bir şekilde bir bağlantı noktası bulmak istiyorum. Bu bağlamda iki sorum olacak.

  1. Hangi dizi port numaraları aramak gerekir? (Port 12345, 12346, ve 12347 kullandım ve sorun yoktu).

  2. Nasıl eğer belli bir noktası başka bir yazılım tarafından işgal edilmiş durumda değilse öğrenebilir miyim?

CEVAP
20 NİSAN 2010, Salı


Eğer port kullanımı sakıncası yok eğer doğru değilse, ServerSocket constructor 0 bir bağlantı noktası belirtin ve herhangi bir serbest liman üzerinde dinleme.

ServerSocket s = new ServerSocket(0);
System.out.println("listening on port: "   s.getLocalPort());

Eğer belirli bir bağlantı noktası kullanmak isterseniz, o zaman muhtemelen en kolay yolu bir çalışan kadar onları yinelemek. Şöyle bir şey:

public ServerSocket create(int[] ports) throws IOException {
    for (int port : ports) {
        try {
            return new ServerSocket(port);
        } catch (IOException ex) {
            continue; // try next port
        }
    }

    // if the program gets here, no port in the range was found
    throw new IOException("no free port found");
}

Böyle kullanılabilir:

try {
    ServerSocket s = create(new int[] { 3843, 4584, 4843 });
    System.out.println("listening on port: "   s.getLocalPort());
} catch (IOException ex) {
    System.err.println("no available ports");
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8bitdigitaltv

    8bitdigitalt

    31 AĞUSTOS 2011
  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011