কমান্ড লাইন থেকে ইউনিক্স নামের সকেট তৈরি করুন


29

এমকিফাইফোর মতো কোনও কমান্ড রয়েছে তবে ডোমেন সকেটের জন্য?

উত্তর:


21

সকেটের জন্য mkfifo এর সঠিক কোনও সমতুল্য নেই, অর্থাত্ কোনও "হ্যাঙ্গিং" সকেট তৈরি করে এমন কোনও আদেশ নেই। এটি historicalতিহাসিক কারণে: সার্ভারের ফাংশন বাইন্ড (), ফাইল সিস্টেমে সকেটের নাম / ইনোড তৈরি করে, নামটি ইতিমধ্যে ব্যবহার করা থাকলে ব্যর্থ হয়। অন্য কথায়, সার্ভার একটি প্রাক বিদ্যমান সকেটে কাজ করতে পারে না।

সুতরাং আপনি যদি আগে সকেট তৈরি করে থাকেন তবে এটি প্রথমে সার্ভারের দ্বারা সরানো দরকার। কোনো লাভ নেই. গ্রেগরির উত্তরের সাথে আপনি যেমন দেখতে পাচ্ছেন, আপনি যদি নেটকাট এর মতো কোনও সার্ভার রাখেন তবে আপনি সকেট তৈরি করতে পারেন at একবার সার্ভার চলে গেলে পুরানো সকেট চলে যায়। একটি নতুন সার্ভারে একটি নতুন সকেট রয়েছে এবং সকেটের নামটি সাদৃশ্য থাকা সত্ত্বেও সমস্ত ক্লায়েন্টকে পুনরায় সংযোগ করতে হবে।


15

সর্বাধিক সাম্প্রতিক নেটক্যাট (এনসি) এবং অনুরূপ প্রোগ্রামগুলি (আমি জানি যতদূর সোকাটে) ডোমেন সকেটের বিকল্প রয়েছে।
অন্যথায়, আপনি ucspi-unix এ দেখতে পারেন


1
ncবিএসডি-তে +1
ক্লিন্ট পাচল

1
# sudo apt-get install netcat-openbsd
দেবিয়ানে

2
ঠিক আছে একবার আপনি এটি ইনস্টল করার পরে, আপনি কীভাবে একটি "সকেট ফাইল" তৈরি করবেন
আলেকজান্ডার মিলস

8

আপনি পাইথন ব্যবহার করতে পারেন:

python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"

এছাড়াও সি, এই উত্তর দেখুন


mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }সহজ শেল ব্যবহারের জন্য: mksock /tmp/test.sock
টিনো

0

আমি কেবল netcatএ জাতীয় ক্ষেত্রে ব্যবহার এবং শুনতে থাকি :

nc -lkU aSocket.sock

আপনার নেটক্যাট-ওপেনবিএসডি ব্যবহার করা উচিত । netcat-ঐতিহ্যগত নেই -Uসুইচ যা ইউনিক্স ডোমেন সকেট জন্য।


-কে এনসি বর্তমান সংযোগটি সম্পূর্ণ হওয়ার পরে অন্য সংযোগের জন্য শোনার জন্য জোর করে। -L বিকল্প ছাড়া এই বিকল্পটি ব্যবহার করা ত্রুটি। -U ইউনিক্স-ডোমেন সকেটগুলি ব্যবহার করতে নির্দিষ্ট করে।
জোহান বুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.