2012-10-15 6 views
7

TCP bağlantısı için rasgele bir bağlantı noktası numarası oluşturmaya çalışıyorum. Kimden: http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Bağlantı noktalarının 1024'ten 49151'e kadar olduğunu, ancak bunların yalnızca UDP olduğunu biliyorum, yalnızca geçerli TCP bağlantı noktası numaralarını nasıl oluşturabilirim?TCP için İzin Verilen Bağlantı Noktası Aralığı

+1

1024'ün üzerindeki her şey bir TCP istemcisi için iyi kabul edilir. 'Kabul edilebilir' bir TCP portu olması için bir wikipedia sayfasındaki bir girişi görmeniz gerekiyorsa bunu çok düşünüyorsunuz. İstemci soketi kaynak portları için tüm TCP portları = <1024 kabul edilebilir. –

cevap

15

Bağlantı noktası 0'a bağlanırsanız, OS geçerli, kullanılmayan bir bağlantı noktası seçecektir.

Rasgele bir şekilde rastgele olması gerekiyorsa, 49152–65535 arasındaki herhangi bir şey otomatik kullanım için güvenli olmalıdır, bu nedenle bu aralıkta rastgele bir sayı seçin. (Bu bağlantı noktası kullanımda olduğunda ortaya çıkarsa yeniden denemeniz gerekebilir.)

+0

Bu aralıktaki herhangi bir port TCP'yi destekliyor mu? çünkü wiki sayfasından bazı portlar sadece UDP için işaretlenmiştir. Ayrıca, bir port kullanımdaysa java'yı nasıl kontrol edebilirim? Teşekkürler! –

+1

1-65535 arasındaki tüm bağlantı noktaları TCP'yi destekler; bu sayfada listelenen TCP/UDP kayıtlı bağlantı noktalarını belirtir; belirli bir kullanım için atanmış olan portlar. Bir portun kullanımda olup olmadığının kontrol edilmesi genellikle sadece bağlanmaya çalışarak yapılır, eğer kullanımda olan portla ilgili bir hata alırsanız, o zaman o olur. Hangi portu aldığınız önemli değil, sadece bir tane alırsanız, o zaman portu 0'a bağlamanız ve daha sonra ne bulduğunuzu öğrenmek için yeni soketinizden yerel portu almanız gerekir. – Eric

+2

Bir bit detaylandırmak için, yerel sunucunuz belirli bir bağlantı noktasına bağlanır, ancak UDP ve TCP farklı "ad alanlarına" sahiptir ve bağımsızdır. _both_ kullanan sunucular, her ikisi için genellikle aynı bağlantı noktası numarasını açar. _Connections_, 5-tuple of protocol, local-addr, local-port, remote-addr, remote-port ile tanımlanır. –