Socket Error 48 হলো একটি Python ত্রুটি যা তখন ট্রিগার হয় যখন প্রসেস নিজেকে একটি পোর্টের সাথে বাঁধতে চেষ্টা করে যা ইতিমধ্যে ব্যবহার 중 है।
"socket.error: [Errno 48] Address already in use" ত্রুটির কারণ কী?
সংক্ষিপ্ত রিসার্চের পর, আমরা কারণগুলো খুঁজে পেয়েছি:
- প্রসেস পোর্টে বাউন্ড: যখনই সার্ভারে একটি প্রসেস তৈরি হয়, এটি ইন্টারনেটের সাথে যোগাযোগ করার জন্য একটি পোর্ট ব্যবহার করে। পোর্টটি একটি হোস্টের মতো যা একবারে এক অতিথিকে তরপosed করতে পারে। তবে, আপনি যদি একটি পোর্ট নির্দিষ্ট না করেন, সার্ভার এটি ডিফল্ট পোর্টে তৈরি করে। এরপর যখন আপনি একটি প্রসেস তৈরি করেন, একটি পোর্ট নির্দিষ্ট করতে হবে কারণ ডিফল্ট পোর্টটি ইতিমধ্যে ব্যবহার 중।
সমাধান ১: পোর্ট নম্বর নির্দিষ্ট করা
ত্রুটি অধিকাংশই তখন ট্রিগার হয় যখন একজন ব্যক্তি একটি নির্দিষ্ট প্রসেসকে ডিফল্ট পোর্টের সাথে বাউন্ড করার চেষ্টা করে এবং ডিফল্ট পোর্টটি ইতিমধ্যে অন্য একটি প্রসেসের সাথে বাউন্ড থাকে। তাই, এই ধাপে, আমরা সেই পোর্টটি নির্দিষ্ট করব যেখানে প্রসেসটি বাউন্ড হবে।
- সম্ভবত আপনি একটি প্রসেস তৈরি করতে নিচের কমান্ডটি ব্যবহার করছেন।
$ python -m SimpleHTTPServer
- এটির পরিবর্তে এই কমান্ডটি ব্যবহার করুন একটি প্রসেস তৈরি করতে।
$ python -m SimpleHTTPServer (Port Number)
- প্রসেস তৈরি হওয়ার জন্য অপেক্ষা করুন এবং চেক করুন সমস্যা বনি আছে কিনা।
সমাধান ২: পোর্ট ফ্রি করা
যদি পোর্টটি ইতিমধ্যে অন্য একটি প্রসেস দ্বারা ব্যবহার 중 থাকে, নতুন প্রসেস সেই পোর্টে ফাংশন করতে পারবে না। তাই, এই ধাপে, আমরা পূর্বের প্রসেসটি টার্মিনেট করে পোর্টটি ফ্রি করব এবং তারপর নতুনটি চালাব। তার জন্য:
- নিচের কমান্ড ব্যবহার করুন একটি নির্দিষ্ট পোর্ট ব্যবহার করা প্রসেসের সংখ্যা লিস্ট করতে।
$ ps -fA | grep python
- কমান্ড আর্গুমেন্ট নিচের লাইনগুলোর মত দেখাবে।
601 88234 12788 0 9:53PM ttys000 0:00.16 python -m SimpleHTTPServer
- এখান থেকে, আমরা যে প্রসেস কোডটি কিল করতে ব্যবহার করব সেটি হলো "88234"।
- প্রসেস কিল করার জন্য নিচের কমান্ডটি ব্যবহার করুন।
kill 88234
বিকল্পভাবে, আপনি নিচের কমান্ডটিও ব্যবহার করতে পারেন এটি কিল করতে।
sudo kill -9 PID
- এখন আপনি নিচের কমান্ড ব্যবহার করে প্রসেসকে এই পোর্টের সাথে বাউন্ড করতে পারেন।
$ python -m SimpleHTTPServer (Port Number)
- প্রসেসটি এখন তৈরি হবে।
সমাধান ৩: Raspberry Pi রিস্টার্ট করা (শুধু Raspberry Pi-এর জন্য)
Raspberry Pi-এ এই ত্রুটি দূর করতে Raspberry Pi রিস্টার্ট করা বা টার্মিনাল শেল কিল করা যায়। Raspberry Pi কখনও কখনও প্রসেসগুলো স্বয়ংক্রিয়ভাবে কিল করতে অক্ষম থাকে এবং পূর্বের প্রসেসগুলো পোর্টে ইতিমধ্যে চলমান থাকা কারণে এই ত্রুটি ট্রিগার করে।