netcat एक मल्टीथ्रेड सर्वर के रूप में


12

मैं इस तरह से एक साधारण सर्वर चलाने के लिए netcat का उपयोग करता हूं:

while true; do nc -l -p 2468 -e ./my_exe; done

इस तरह, कोई भी पोर्ट 2468 पर मेरे होस्ट से कनेक्ट करने और "my_exe" के साथ बात करने में सक्षम है।
दुर्भाग्य से, यदि कोई अन्य व्यक्ति एक खुले सत्र के दौरान कनेक्ट करना चाहता है, तो उसे "कनेक्शन अस्वीकृत" त्रुटि मिलेगी, क्योंकि नेटकैट अब "लूप" होने पर अगले तक सुनने में नहीं है।

क्या नेटकैट बनाने का एक तरीका एक बहु-थ्रेडेड सर्वर की तरह है, जो हमेशा आने वाले कनेक्शन के लिए सुनने में होता है? यदि नहीं, तो क्या इसके लिए कुछ वर्कअराउंड हैं?


आप
समाज

जवाबों:


18

आप कार्य के लिए गलत टूल का उपयोग कर रहे हैं: ucspi-tcp , विशेषकर tcpserver जैसी किसी चीज़ का उपयोग करें :

tcpserver waits for incoming connections and, for each connection, 
runs a program of your choice.

2
यह मेरा सारा जीवन कहाँ रहा है ?!
श्रीधर सरनोबत

धन्यवाद @akira, क्या आप उदाहरण प्रदान कर सकते हैं?
सबरीना

3

हालाँकि आपने जिस ऑपरेटिंग सिस्टम का उपयोग किया है, उसका उल्लेख नहीं किया है, मैं मानूंगा कि यह आपके शेल कमांड उदाहरण के सिंटैक्स पर आधारित लिनक्स या यूनिक्स है।

यदि आपका सिस्टम xinetd (या इसके पूर्ववर्ती inetd ) पर चल रहा है , तो आप अपनी पसंद के पोर्ट पर कनेक्शन के लिए सुनने के लिए उस सॉफ़्टवेयर का उपयोग कर सकते हैं, और प्रतिक्रिया करने के लिए एक निष्पादन योग्य चला सकते हैं। Xinetd / inetd के साथ, आपके पास कई समवर्ती कनेक्शनों की अनुमति देने का विकल्प होता है, प्रत्येक आपके निष्पादन योग्य के एक अलग उदाहरण द्वारा परोसा जाता है।


-2

आप संभवतः इस प्रक्रिया की पृष्ठभूमि तैयार कर सकते हैं (तब यह अगले लूप में जाने से पहले वापसी की प्रतीक्षा नहीं करता है) 'और' जैसे:

while true; do nc -l -p 2468 -e ./my_exe &; done


5
और, केवल पहला आह्वान काम करेगा; हर सफल व्यक्ति विफल हो जाएगा क्योंकि पोर्ट 2468 पर पहले से ही एक सर्वर सॉकेट है।
डैनियल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.