मैं पैकेट प्राप्त करने के लिए एक यूडीपी इको सर्वर चाहता हूं, और वास्तव में इसे प्राप्त किया है। मैं इसे कैसे उपयोग कर सकता हूँ netcat
या socat
? इसे हमेशा के लिए जीवित रहना चाहिए और कई मेजबानों से आने वाले पैकेट को संभालना चाहिए।
मैं पैकेट प्राप्त करने के लिए एक यूडीपी इको सर्वर चाहता हूं, और वास्तव में इसे प्राप्त किया है। मैं इसे कैसे उपयोग कर सकता हूँ netcat
या socat
? इसे हमेशा के लिए जीवित रहना चाहिए और कई मेजबानों से आने वाले पैकेट को संभालना चाहिए।
जवाबों:
एक और नेटकैट-जैसा उपकरण नैम्प संस्करण है ncat
, जिसमें इस तरह की चीजों को सरल बनाने के लिए बहुत सारे बिल्ट इन गुड्स हैं। यह काम करेगा:
ncat -e /bin/cat -k -u -l 1235
-इसका अर्थ है कि यह / बिन / बिल्ली को (जो आप टाइप करते हैं, उसे प्रतिध्वनित करने के लिए)
-k का अर्थ है-जीवित रखना, कि यह प्रत्येक कनेक्शन के बाद सुनता रहता है
-u का अर्थ है udp
-l 1235 का अर्थ है कि यह पोर्ट 1235 पर सुनता है
मैं socat -v PIPE udp-recvfrom:5553,fork
सर्वर चलाता था और socat - udp:localhost:5553
ग्राहकों के लिए।
यह एक बड़ी मदद थी!
socat TCP4-LISTEN:2000,fork EXEC:cat
आप ग्राहक के रूप में इको सर्वर और नेटकैट के रूप में सोसाइट (नेटकैट का उपयोग करने के बजाय) का भी उपयोग कर सकते हैं।
सोकेट इको सर्वर (टीसीपी पोर्ट 1234 पर सुनता है):
socat -v tcp-l:1234,fork exec:'/bin/cat'
Netcat ग्राहक (TCP पोर्ट 1234 पर सर्वर से जुड़ता है):
nc serverip 1234
आप एक सी प्रोग्राम लिख सकते हैं जो कांटे nc -u -l -p 4321
और फिर जोड़ने के लिए डुबकी (2) का उपयोग करता है:
फिर एक अंतहीन लूप में माता-पिता स्टड से पढ़ता है और स्टैडआउट में लिखता है कि माता-पिता जो भी पढ़ते हैं।
socat -v PIPE UDP-LISTEN:5555,fork
, लेकिन दूसरे कनेक्शन से इनकार कर दिया जाता है। वैसे, यह टीसीपी-लिस्टेन के साथ ठीक काम करता है। मैं कोड से परहेज कर रहा हूं, अन्यथा मैं यह सब सी। में लिख सकता था
यदि आप विंडोज पर चल रहे हैं और साइबर जैसे पर्यावरण जैसे एक यूनिक्स का उपयोग करते हैं, तो नेटकैट माइग्रेट -ई पैरामीटर प्रदान नहीं करता है। यह मेरे लिए ठीक काम किया।
netcat
समाधान Ubunutu में पूर्व-स्थापित
netcat
पहले से स्थापित Ubuntu 16.04 में से आता है netcat-openbsd
, और कोई नहीं है -c
विकल्प है, लेकिन मैनुअल एक समाधान देता है:
sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo
तब ग्राहक उदाहरण:
echo abc | netcat localhost 8000
TODO: इनपुट स्ट्रिंग मान को कैसे संशोधित किया जाए? निम्नलिखित कोई उत्तर नहीं देता है:
cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo
दूरस्थ शेल उदाहरण हालांकि काम करता है:
cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo
मैं नहीं जानता कि कैसे समवर्ती अनुरोधों से निपटना है।