2012-04-30 18 views
15

प्रारंभ होने पर हमारे जावा प्रोग्राम में से एक, यह केवल आईपीवी 6 (8080)जावा पर IPv4 और IPv6 दोनों का समर्थन कैसे करें

उदा।

# netstat -ntpl 

Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID/Program name 
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  -    
tcp6  0  0 :::8080     :::*     LISTEN  -    
tcp6  0  0 :::22     :::*     LISTEN  -    

समस्या यह बाहर से सुलभ नहीं है (स्थानीय होस्ट को छोड़कर), इसे सुलझाने के लिए, मैं इस मैन्युअल

-Djava.net.preferIPv4Stack=true 

जोड़ने लेकिन इस कार्यक्रम केवल IPv4 नेटवर्क के लिए है है।

क्या sshd जैसे कुछ ऐसा करना संभव है, दोनों आईपीवी 4 और आईपीवी 6 का समर्थन करते हैं?

उत्तर

21

मुझे लगता है यह कम है नेटवर्किंग स्टैक/ओएस नेटवर्क विन्यास मुद्दा एक OS की तुलना में एक जावा प्रोग्रामिंग मुद्दा:

http://coding.derkeiler.com/Archive/Java/comp.lang.java.help/2009-09/msg00087.html

कुछ OSes, सिर्फ़ एक देशी TCP सॉकेट दोनों पर एक बंदरगाह को सुन सकते हैं आईपीवी 4 और आईपीवी 6 एक साथ। यह रिमोट आईपीवी 4 और रिमोट आईपीवी 6 क्लाइंट से कनेक्शन स्वीकार करने में सक्षम है। अन्य ओएस (जैसे WinXP) एक ओएस मूल सॉकेट ऐसा नहीं कर सकता है, लेकिन केवल आईपीवी 4 या आईपीवी 6 से स्वीकार कर सकता है, दोनों नहीं। उन ओएस पर, दो आईपीवी 4 और आईपीवी 6 क्लाइंट्स, आईपीवी 4 कनेक्शन सुनने के लिए एक सॉकेट और आईपीवी 6 के लिए कनेक्शन स्वीकार करने में सक्षम होने के लिए दो सुनने सॉकेट होना आवश्यक है।

विंडोज 7 और विंडोज सर्वर 2008 दोहरी ढेर को ठीक से संभालते हैं; विंडोज एक्सपी इतना नहीं :)

आप लिनक्स पर हैं - अधिकांश आधुनिक लिनक्स डेस्कटॉप और सर्वर दोहरी ipv4 ipv6 को बिना किसी समस्या के संभालते हैं।

तुम्हें पता है कि कैसे आप अपने जावा आवेदन के लिए IPV6 "बंद" कर सकते हैं:: -Djava.net.preferIPv4Stack=true

आप भी अपने सर्वर मजबूर कर सकते हैं

यहाँ अंतर पर एक अच्छा लेख है इस तरह आईपीवी 6 का उपयोग करने के लिए: echo 0 > /proc/sys/net/ipv6/bindv6only

यह तर्कसंगत है कि आपका बी स्था स्रोत:

आप बिल्कुल आप क्या चाहते हैं पूरा करने के लिए (कम से कम जावा प्रोग्रामिंग स्तर पर) सक्षम होना चाहिए, जब तक आप बाहरी नेटवर्क के मुद्दों के आधार पर सीमित कर रहे हैं:

Nodes)  V4 Only V4/V6 V6 Only 
      ------- ----- ------- 
V4 Only  x  x 
V4/V6  x  x  x 
V6 Only    x  x 

पीएस:

यहां एक और अच्छा लिंक है, जो बताता है कि सॉकेट स्तर पर क्या हो रहा है।यह जावा (यह सी) नहीं है, लेकिन वास्तव में नमूना सिद्धांतों को लागू:

संबंधित मुद्दे