2010-01-18 12 views
8

SocketImplFactory için javadoc özellikle, "Yuva uygulamasını oluşturan soket fabrikasını değiştirerek bir uygulama, yerel güvenlik duvarına uygun yuvalar oluşturacak şekilde kendini yapılandırabilir." Bununla birlikte, söz konusu güvenlik duvarına bağlanmak için, gerçek bağlantıyı yapmak için gerçek bir sokete gerek duyulmaktadır. Varsayılan SocketImplFactory değiştirilirken, gerçek bir soket alma hakkında nasıl bir şey olur?Yazma java.net.SocketImplFactory

Bu java.net.PlainSocketImpl ve java.net.SocksSocketImpl'in Sun'ın Java'sında mevcut olduğunu biliyorum, ancak JVM'ler arasında taşınabilir bir şekilde yapmanın herhangi bir yolu var mı?

+0

İyi soru. (Sadece değişken statics'ten nefret etmiyor musunuz.) –

+0

Belki de JNI kullanarak yerel güvenlik duvarını yapılandırabilirsiniz? – Pindatjuh

cevap

0

setSocketImplFactory numaralı telefonu aramadan önce güvenlik duvarına bağlanmak için soket oluşturun.

+1

Soket kırılırsa veya hemen bağlanamazsa iyi olmaz. –

+2

Güvenlik duvarında birden çok bağlantı olması gerekiyorsa, SOCKS (her tünel bağlantısı için güvenlik duvarına bir TCP bağlantısına ihtiyaç duyar) durumunda bu işe yaramaz. Bir fabrika oluşturmadan önce java.net.Socket oluşturabilir ve bundan sonra varsayılan SocketImpl sınıfını ayıklayabilir ve gelecekte daha fazlasını oluşturmak için yansımayı kullanabilirsiniz. Açıkça bir bilgisayar korsanlığı olarak sınıflandırılabilir, ancak VM'ler arasında taşınabilir olma şansının makul olduğu görülmektedir. – Dolda2000

1

Bu belgenin arkasındaki düşünce hakkında bazı bilgiler var. here

+0

Teşekkürler, ancak bağlantıyı doğru yaptığınızdan emin misiniz? Bu hata raporu sadece SocketImpls bağlamında DNS ad çözümlemesi ile ilgilidir. – Dolda2000