আপনার Mac-এ, lsof দিয়ে সার্ভারের লিসেনিং অ্যাড্রেস পরীক্ষা করুন, তারপর—প্রয়োজনে—একই নেটওয়ার্কে থাকা অন্য একটি ডিভাইস থেকে আপনার Mac-এর Wi-Fi বা Ethernet IP-তে সংযোগ করার চেষ্টা করুন। 127.0.0.1 বা ::1-এর মতো একটি লুপব্যাক অ্যাড্রেস কেবল স্থানীয় (local-only); 0.0.0.0 বা ::-এর মতো একটি ওয়াইল্ডকার্ড অ্যাড্রেস নেটওয়ার্ক ইন্টারফেসের মাধ্যমে সংযোগ গ্রহণ করতে পারে। সার্ভারটির আওতা বা রিচ নির্ধারণ করার আগে প্রকৃত অ্যাড্রেসটি নিশ্চিত করুন এবং নির্দিষ্ট পোর্টটি পরীক্ষা করুন।

১. সার্ভারের লিসেনিং অ্যাড্রেস খুঁজুন

ডেভেলপমেন্ট সার্ভারটি চালু থাকা অবস্থায়, Terminal খুলুন এবং 8000-এর স্থলে এর পোর্ট নম্বরটি বসিয়ে এই কমান্ডটি চালান:

lsof -nP -iTCP:8000 -sTCP:LISTEN

lsof নেটওয়ার্ক সকেটসহ উন্মুক্ত ফাইলগুলির তালিকা তৈরি করে; এর TCP স্টেট ফিল্টার লিসেনারগুলিকে বাছাই করতে পারে। -nP অপশনগুলি অ্যাড্রেসগুলিকে সংখ্যাগত রাখে এবং পোর্ট নম্বরগুলিকে সেবামূলক নাম (service name) হিসেবে প্রদর্শিত হতে বাধা দেয়। Apple-এর lsof ম্যানুয়াল

NAME কলামটি দেখুন। 127.0.0.1:8000 (LISTEN) দিয়ে শেষ হওয়া ফলাফল IPv4 লুপব্যাক অ্যাড্রেসের সাথে যুক্ত (bound)। localhost:8000-ও একটি লুপব্যাক লিসেনার নির্দেশ করে, যদিও প্রদর্শিত নামে ভিন্নতা থাকতে পারে। *:8000 প্রদর্শনকারী ফলাফল সেই অ্যাড্রেস ফ্যামিলির জন্য একটি ওয়াইল্ডকার্ড লিসেনার। TYPE কলামটিও পরীক্ষা করুন: পৃথক IPv4 এবং IPv6 সারি গুরুত্বপূর্ণ হতে পারে। ::1 হলো IPv6 লুপব্যাক; :: হলো IPv6 ওয়াইল্ডকার্ড। কিছু সিস্টেমে, একটি IPv6 ওয়াইল্ডকার্ড লিসেনার IPv4 সংযোগও গ্রহণ করতে পারে, তাই কেবল তালিকাটি সেই বিষয়টি পুরোপুরি নিশ্চিত নাও করতে পারে।

কমান্ডটি যদি কোনো ফলাফল না দেয়, তবে নিশ্চিত করুন যে সার্ভারটি এখনও চালু আছে, আপনি এর বর্তমান পোর্টটি ব্যবহার করেছেন এবং এটি TCP-তে লিসেন করছে। এই কমান্ডটি UDP লিসেনার পরীক্ষা করে না। যদি উচ্চতর অনুমতি (elevated permissions) ছাড়া lsof কোনো ফলাফল না দেখায়, তবে কেবল তখনই sudo দিয়ে পুনরায় চালান যদি আপনাকে অন্য কোনো অ্যাকাউন্টের মালিকানাধীন প্রসেস পরীক্ষা করতে হয়; macOS আপনার লগইন পাসওয়ার্ড চাইতে পারে।

২. পৌঁছানোর সক্ষমতার (reachability) সূত্র হিসেবে অ্যাড্রেসটি পড়ুন

একটি নির্দিষ্ট লুপব্যাক অ্যাড্রেসের সাথে যুক্ত লিসেনার সেই লুপব্যাক ইন্টারফেসে পাঠানো সংযোগ গ্রহণ করে, আপনার Mac-এর LAN অ্যাড্রেসে নয়। একটি ওয়াইল্ডকার্ড অ্যাড্রেসের অর্থ হলো সকেটটি লুপব্যাকে সীমাবদ্ধ নয়, তাই এটি একটি নেটওয়ার্ক ইন্টারফেসের মাধ্যমে পৌঁছানো সম্ভব হতে পারে। Apple লিসেনিং সকেটকে এমন একটি সকেট হিসেবে বর্ণনা করে যা আগত সংযোগের জন্য অপেক্ষা করে। TCP-ভিত্তিক সার্ভার সংক্রান্ত Apple-এর ওভারভিউ

ওয়াইল্ডকার্ড থাকা মানেই অন্য কোনো ডিভাইস সংযোগ করতে পারবে—এমন কোনো অকাট্য প্রমাণ নয়। সার্ভারটিকে অবশ্যই সেই পোর্টে সচল থাকতে হবে; macOS ফায়ারওয়াল সেটিংস, রাউটার বা Wi-Fi ক্লায়েন্ট আইসোলেশন এবং অন্যান্য নেটওয়ার্ক পরিস্থিতি সংযোগটিকে প্রভাবিত করতে পারে। বিপরীতভাবে, localhost ব্যবহার করে Mac-এ ব্রাউজারের একটি সফল পরীক্ষা কেবল প্রমাণ করে যে একটি স্থানীয় সংযোগ কাজ করছে।

৩. আপনার নেটওয়ার্কের অন্য একটি ডিভাইস থেকে অ্যাক্সেস পরীক্ষা করুন

আপনি যে নেটওয়ার্কটি পরীক্ষা করতে চান তার জন্য Mac-এর অ্যাড্রেসটি খুঁজুন। Wi-Fi-এর জন্য, Wi-Fi সেটিংস বা Wi-Fi স্ট্যাটাস মেনুতে সংযোগের IP অ্যাড্রেস খুঁজে বের করার বিষয়টি Apple-এর নথিপত্রে উল্লেখ রয়েছে; macOS-এর সংস্করণের ওপর ভিত্তি করে নির্দিষ্ট নিয়ন্ত্রণ বা সেটিংসে ভিন্নতা থাকতে পারে। Apple-এর Wi-Fi সেটিংস গাইড

একই LAN-এ সংযুক্ত দ্বিতীয় একটি ডিভাইস থেকে, ব্রাউজার খুলুন বা http://MAC-IP:8000 রিকোয়েস্ট করতে একটি HTTP ক্লায়েন্ট ব্যবহার করুন, যেখানে Mac-এর বর্তমান অ্যাড্রেস এবং সার্ভারের পোর্টটি প্রতিস্থাপন করবেন। উদাহরণস্বরূপ, Mac-এর LAN অ্যাড্রেস যদি 192.168.1.23 হয় এবং পোর্ট যদি 8000 হয়, তবে http://192.168.1.23:8000 দিয়ে চেষ্টা করুন। একটি প্রতিক্রিয়া বা রেসপন্স নির্দেশ করে যে এই ক্লায়েন্টটি সেই রুটের সার্ভিসে পৌঁছাতে পেরেছে; সংযোগের সময়সীমা পার হওয়া (timeout) বা প্রত্যাখ্যান (refusal) হওয়া নিজে থেকেই এর মূল কারণ চিহ্নিত করে না। ফায়ারওয়াল বা নেটওয়ার্ক সেটিংস খতিয়ে দেখার আগে নিশ্চিত করুন যে উভয় ডিভাইস উদ্দিষ্ট নেটওয়ার্কে রয়েছে এবং লিসেনারটি পুনরায় পরীক্ষা করুন।

৪. সমর্থিত হলে লোকাল-অনলি বাইন্ড সুস্পষ্ট করুন

সঠিক সেটিংসটি ডেভেলপমেন্ট সার্ভারের নিজস্ব, সার্বজনীন কোনো macOS সুইচের নয়। উদাহরণস্বরূপ, Python-এর http.server ফিচারটি --bind সমর্থন করে; এর ডকুমেন্টেশন অনুসারে ডিফল্ট সেটিংস সব ইন্টারফেসে বাইন্ড করে, পক্ষান্তরে এই কমান্ডটি IPv4 লুপব্যাকে বাইন্ড করে:

python3 -m http.server --bind 127.0.0.1 8000

Python 3 ইনস্টল করা থাকলে এটি কাজ করে। Python বাইন্ড অপশন এবং এর ডিফল্ট আচরণ উভয়ই নথিভুক্ত করেছে। Python http.server ডকুমেন্টেশন

অন্যান্য টুল তাদের নিজস্ব হোস্ট বা বাইন্ড সেটিংস প্রদর্শন করে। Node.js নথিভুক্ত করেছে যে server.listen() থেকে হোস্ট বাদ দিলে এটি একটি অনির্দিষ্ট অ্যাড্রেস নির্বাচন করে, যার আচরণ IPv6-এর প্রাপ্যতার ওপর নির্ভর করে। আপনার সার্ভার এবং সংস্করণের ডকুমেন্টেশন দেখুন; অন্য কোনো ফ্রেমওয়ার্কের ফ্ল্যাগ এখানেও প্রযোজ্য হবে এমনটি ধরে নেবেন না। Node.js net.Server ডকুমেন্টেশন সেটিংস পরিবর্তন করার পরে, সার্ভারটি রিস্টার্ট করুন এবং lsof পরীক্ষাটি পুনরায় করুন। আপনি যখন অ্যাক্সেস শেয়ার করতে চান তখন একটি LAN পরীক্ষা কার্যকর, তবে একটি LAN বা ওয়াইল্ডকার্ড অ্যাড্রেসে বাইন্ড করা ডেভেলপমেন্ট সার্ভিসটিকে অন্যান্য অ্যাক্সেসযোগ্য ডিভাইসের সামনে উন্মুক্ত করে দিতে পারে।

উৎস