संदेश-पारित करने की आवश्यकता को एक उच्च स्तर पर लागू किया जाना चाहिए; टीसीपी में एक संदेश की धारणा नहीं है - टीसीपी कनेक्शन ऑक्टेट की धाराएं स्थानांतरित करता है।
आप कुछ प्रकार प्राप्त कर सकते हैं, जैसे कि आप पाइपों के साथ क्या अनुरोध करते हैं nc
और देखें ; या एलेक्स स्ट्रैजी इंगित करता है के रूप में जाँच करें ।man mkfifo
socat
एक मध्य-परत सेवा के बिना, मूल समस्याएं हैं (1) वह डेटा नेटवर्क में नहीं लिखा जा सकता है जब तक कि कोई दूसरा इसके लिए सुनने वाला न हो, और (2) कि टीसीपी कनेक्शन द्वि-दिशात्मक हैं।
जब तक आप नेटवर्क को डेटा नहीं लिख सकते जब तक कि कोई इसके लिए नहीं सुन रहा है, आपको डेटा भेजने से पहले श्रोता को हमेशा शुरू करना चाहिए । (एक संदेश पासिंग सिस्टम में संदेशों को संभालने की प्रक्रिया किसी प्रकार की बफरिंग प्रदान करेगी।)
आपका उदाहरण आसानी से लिखा जा सकता है:
पहले मशीन 2 (गंतव्य) पर एक श्रोता शुरू करें:
nc -l 1234 | ...some processing with the received data...
आपके उदाहरण में, यह होगा
nc -l 1234 | cat
यह ब्लॉक करेगा और किसी को 1234 पोर्ट के लिए कुछ डेटा भेजने के लिए इंतजार करेगा।
तब आप मशीन 1 (स्रोत) से कुछ डेटा भेज सकते हैं:
...make up some data... | nc machine2 1234
आपके उदाहरण में, यह होगा
echo "Hello" | nc machine2 1234
यदि आप प्राप्त डेटा को किसी तरह से संसाधित करना चाहते हैं और जवाब देना चाहते हैं तो आप शेल के कोप्रोसेसिंग सुविधा का उपयोग कर सकते हैं। उदाहरण के लिए, यह एक बहुत ही सरल (और बहुत जिद्दी) वेब सर्वर है:
#! /bin/bash
while :; do
coproc ncfd { nc -l 1234; }
while :; do
read line <&${ncfd[0]} || break
line="$(
echo "$line" |
LC_ALL=C tr -cd ' -~'
)"
echo >&2 "Received: \"$line\""
if [ "$line" = "" ]; then
echo >&${ncfd[1]} "HTTP/1.0 200 OK"
echo >&${ncfd[1]} "Content-Type: text/html"
echo >&${ncfd[1]} "Connection: close"
echo >&${ncfd[1]} ""
echo >&${ncfd[1]} "<title>It works!</title>"
echo >&${ncfd[1]} "<center><b>It works!</b></center>"
echo >&${ncfd[1]} "<center>-- $(date +%Y-%m-%d\ %H:%M:%S) --</center>"
break
fi
done
kill %%
sleep 0.1
done
देखें कि द्वि-दिशात्मक संचार कैसे स्क्रिप्ट के मुख्य निकाय और सरणी में फ़ाइल डिस्क्रिप्टर का उपयोग करके कॉपीप्रोसेस के बीच प्राप्त किया जाता है $ncfd
।