मैं a clone of inetd लिख रहा हूं जिसमें मुझे एक सर्वर चलाया जाना चाहिए जो क्लाइंट के आईपी और पोर्ट को प्रिंट करता है।सॉकेट डिस्क्रिप्टर से आईपी/पोर्ट को पुनर्प्राप्त करना
मैं STDIN
और STDOUT
के ऊपर लिख के रूप में सॉकेट वर्णनकर्ता के साथ, my initial solution यह करने के लिए sockaddr_in
संरचना है, जो जरूरत में जानकारी शामिल है ठीक करने के लिए किया गया था। getsockname()
के साथ ऐसा करने से, एक खाली संरचना वापस आ रही है, सभी बिट्स 0
मेरे दृष्टिकोण के साथ क्या गलत है इसका कोई विचार? क्या आईपी/पोर्ट को पुनर्प्राप्त करने के लिए मैं कोई अन्य दृष्टिकोण उपयोग कर सकता हूं?
धन्यवाद
ओपी ने सॉकेट के लिए फाइल डिस्क्रिप्टर के साथ "अधिलेखित" stdin और stdout का उल्लेख किया है, जिसे अनुचित रूप से सबसे अच्छा शब्द दिया जाता है, लेकिन यह संकेत दे सकता है कि प्रतिस्थापन गलत तरीके से किया जा रहा है और stdin (fd 0) वास्तव में एक सॉकेट नहीं है ... –
@ आर .., https://github.com/konr/Licio/blob/master/05/time पर अपना कोड देखें।सी –
डुनो अगर यह * समस्या है, लेकिन 'शून्य * * के लिए वास्तव में बदसूरत विकल्प के अलावा' स्ट्रक्चर सॉकडर 'का उपयोग करना हमेशा एक गलती है। आपके पास 'struct sockaddr' प्रकार की वास्तविक वस्तुएं नहीं होनी चाहिए। हमेशा आवश्यकतानुसार 'struct sockaddr_in',' struct sockaddr_in6', या 'struct sockadd_storage' का उपयोग करें। –