উত্তর:
nc
( netcat
) ব্যবহার করে ।
সার্ভার:
$ nc -l localhost 3000
ক্লায়েন্ট:
$ nc localhost 3000
সার্ভার এবং ক্লায়েন্ট উভয়ই স্ট্যান্ডার্ড আউটপুট / ইনপুট পড়বে এবং লিখবে।
সার্ভার এবং ক্লায়েন্ট উভয়ই একই মেশিনে থাকলে এটি কাজ করবে। অন্যথায় localhost
সার্ভারের বাহ্যিক নাম পরিবর্তন করুন ।
কিছুটা আকর্ষণীয়, একটি "সার্ভার" যা আপনাকে দিনের সাথে সময় দেয় যা আপনি এটির সাথে সংযুক্ত হয়ে যদি একটি প্রেরণ করেন d
এবং আপনি প্রেরণ করেন তবে কোনটি ছাড়বে নাq
:
সার্ভার (ইন bash
):
#!/bin/bash
coproc nc -l localhost 3000
while read -r cmd; do
case $cmd in
d) date ;;
q) break ;;
*) echo 'What?'
esac
done <&"${COPROC[0]}" >&"${COPROC[1]}"
kill "$COPROC_PID"
ক্লায়েন্ট সেশন:
। এনসি লোকালহোস্ট 3000 ঘ থু জানুয়ারী 12 18:04:21 সিইটি 2017 হ্যালো? কি? কুই
(সার্ভারটি পরে বেরিয়ে আসে q
, কিন্তু ক্লায়েন্ট সনাক্ত করে না যে আপনি চাপ না দেওয়া পর্যন্ত এটি চলে গেছে Enter)।
সাধারণ পরামর্শ সঙ্গে netcat
ভাল উপায়।
তবে bash
এবং ksh
আপনি এটি করতে পারেন:
exec 3<>/dev/tcp/hostname/port
echo "request" 1>&3
response="$(cat <&3)"
1>&3
? এটি কী প্রতিনিধিত্ব করে তা সম্পর্কে আমি নিশ্চিত নই
echo "request" >&3
, আমি অনুমান করি যে 1টি কেবলমাত্র অপ্রয়োজনীয়
নেটকাট চেষ্টা করুন (যেমন এনসি)
echo GET / HTTP/1.0 | nc 0 80
HTTP/1.1 400 Bad Request
Date: Thu, 12 Jan 2017 13:44:23 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Length: 311
Connection: close
Content-Type: text/html; charset=iso-8859-1
echo GET / HTTP/1.0
আমার স্থানীয় http সার্ভারে একটি জিইটি ( ) প্রেরণ করিঅনেক ক্ষেত্রেই আমার নেটকাট / সকেটে অ্যাক্সেস নেই। exec
বিতরণ করা কম্পিউটিং পরিবেশে বাশ ব্যবহার করার ক্ষেত্রে আমারও সমস্যা ছিল ।
এর প্রকোপটির কারণে, বিকল্প সমাধান হ'ল জিএনইউ এডাব্লু কে এর টিসিপি / আইপি ক্ষমতা ব্যবহার করা। এটি এর "দ্বিমুখী পাইপ" অপারেটরের আশেপাশে একটি সাধারণ সিনট্যাক্স সরবরাহ করে।
এখানে এই উত্স থেকে একটি পরিবর্তিত উদাহরণ যা সকেটের মাধ্যমে একটি টিসিপি বার্তা প্রেরণ করবে:
BEGIN {
NetService = "/inet/tcp/0/cs.wisc.edu/finger"
print "coke" |& NetService
close(NetService)
}
ঠিকানার জন্য পূর্ণ বাক্য গঠন হল: /net-type/protocol/local-port/remote-host/remote-port
। যখন local-port
0 তে সেট করা হয় স্থানীয় হোস্ট পোর্টটি স্বয়ংক্রিয়ভাবে বেছে নেয় যা সাধারণত আপনি চান। gawk
এর টিসিপি / আইপি নেটওয়ার্কিং ক্ষমতা সম্পর্কে আপনি এখানে আরও পড়তে পারেন :
ctrl+c
দেয়, ফলাফলটি দেখায় না। প্রতিধ্বনি ব্যবহার করে, যেমনecho "cookie" | nc localhost 9090
, ক্লায়েন্টের আউটপুট স্ট্রিম বন্ধ হয়ে যাবে (ইওফ প্রেরিত) তবে ক্লায়েন্টটি এখনও সার্ভারের ফলাফলের জন্য অপেক্ষা করবে।