একটি রিমোট কম্পিউটার হলো সেটির কোনো ফিজিক্যাল প্রেজেন্স নেই; এটি শুধু কোনো কম্পিউটার নেটওয়ার্কের মাধ্যমে অ্যাক্সেস করা যায়। রিমোট হোস্ট হলো সেই কম্পিউটার যা নেটওয়ার্ক হোস্ট করে যেটি রিমোট কম্পিউটারকে হোস্ট করে এবং রিমোট ক্লায়েন্ট হলো নেটওয়ার্কে রিমোট ক্লায়েন্টের ব্যবহারকারী। এই ফিচারটি অনেক প্রসেসে বিপ্লব নিয়ে এসেছে এবং ভবিষ্যতে এর গ্রেট স্কোপ আছে।

তবে, সম্প্রতি রিমোট হোস্টে কানেক্ট করার চেষ্টা করার সময় "an existing connection was forcibly closed by the remote host" এররער অনেক রিপোর্ট আসছে। এই এররটি একটি ক্লায়েন্ট এবং সার্ভারের মধ্যে সকেট কানেকশনের সাথে ট্রিগার হয়। এই আর্টিকেলে, আমরা এই এররটি সম্পূর্ণরূপে সমাধানের কিছু বিable সমাধান প্রদান করব এবং আপনাকে এই এরর ট্রিগার করার কারণগুলোও জানাব।
Windows-এ 'An existing connection was forcibly closed by the remote host' এররের কারণ কী?
বহু ব্যবহারকারীর রিপোর্ট পাওয়ার পর আমরা ইস্যুটি তদন্ত করেছি এবং এটি সমাধানের একটি সমাধান সেট খুঁজে পেয়েছি। এছাড়া, এররটি ট্রিগার হওয়ার কারণগুলো তদন্ত করে নিচে লিস্ট করা হলো।
- TLS 1.1/1.0 ব্যবহার: যদি অ্যাপ্লিকেশনটি TLS 1.1 বা TLS 1.0-এ চলে, তবে এগুলো ডিপ্রিকেটেড হওয়ার কারণে এই এরর ট্রিগার হতে পারে। অ্যাপ্লিকেশন যে প্রোটোকলটি ব্যবহার করে সেটি সিলেক্ট করার সময় TLS 1.2 পথটি সেরা।
- ক্রিপ্টোগ্রাফি ডিজেবল: আপনার মেশিনের জন্য ক্রিপ্টোগ্রাফি যদি ডিজেবল থাকে তবে এটি TLS 1.2-এর ব্যবহার বাধা দেবে এবং TLS 1.0-এ ফলব্যাক করবে যা এরর ট্রিগার করতে পারে।
- সকেট ইমপ্লিমেন্টেশন: কিছু ক্ষেত্রে, একটি নির্দিষ্ট ধরনের সকেট ইমপ্লিমেন্টেশন এরর ট্রিগার করে। ".NET" অ্যাপ্লিকেশন ببعض ইমপ্লিমেন্টেশনে একটি বাগ আছে যা এই এরর তৈরি করতে পারে।
- অনুপস্থিত কোড: Entity Framework ব্যবহার করা কিছু লোকের জন্য, একটি নির্দিষ্ট লাইন কোড অনুপস্থিত থাকা দেখা গেলো যার কারণে এররটি ট্রিগার হচ্ছিল।
- পুরনো ".NET" ফ্রেমওয়ার্ক: কিছু ক্ষেত্রে, ".NET" ফ্রেমওয়ার্ক আউটডেটেড থাকলে এই এরর ট্রিগার হতে পারে। নির্দিষ্ট টাস্কগুলোর জন্য ".NET" ফ্রেমওয়ার্কটি লেটেস্ট ভার্সনে আপডেট করা থাকতে হয় সঠিকভাবে কাজ করার জন্য।
এখন আপনার সমস্যার প্রকৃতি সম্পর্কে বেসিক ধারণা আছে, আমরা সমাধানগুলোর দিকে যাব। কনফ্লিক্ট এড়াতে সুনিশ্চিত করুন যে আপনি সেগুলো সুনির্দিষ্ট ক্রমে ইমপ্লিমেন্ট করছেন।
সমাধান ১: ক্রিপ্টোগ্রাফি সক্রিয় করা
আপনার মেশিনের জন্য ক্রিপ্টোগ্রাফি যদি ডিজেবল থাকে তবে TLS 1.2-এর ব্যবহার নিষিদ্ধ। তাই এই ধাপে, আমরা ক্রিপ্টোগ্রাফি সক্রিয় করব। তার জন্য:
- "Windows" + "R" চাপিয়ে Run prompt খুলুন।
- "regedit" টাইপ করুন এবং "Enter" চাপুন।

- নিচের অ্যাড্রেসে নেভিগেট করুন
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.3031
যদি ডান প্যানে "SchUseStrongCrypto" ভ্যালু না থাকে তবে এই অ্যাড্রেসে নেভিগেট করুন।
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
- ডান প্যানে, "SchUseStrongCrypto" অপশনে ডাবল ক্লিক করুন এবং Value data হিসেবে "1" লিখুন।

- "OK" ক্লিক করুন আপনার পরিবর্তনগুলো সেভ করতে এবং চেক করুন সমস্যা এখনো আছে কিনা।
সমাধান ২: TLS 1.2 ব্যবহার বাধ্যতামূলক করা
যদি অ্যাপ্লিকেশনটি TLS 1.1 বা TLS 1.0 ব্যবহার করার জন্য কনফিগার করা থাকে TLS 1.2-এর বদলে, তবে এটি এরর ট্রিগার করতে পারে। তাই এই ধাপে, আমরা আমাদের কম্পিউটারকে TLS 1.2 ব্যবহার করার জন্য কনফিগার করব। তার জন্য:
- সাইটের রুটে নেভিগেট করুন এবং "global.asax" ফাইলে ডান-ক্লিক করুন।
- লিস্ট থেকে "View Code" সিলেক্ট করুন।
- সেখানে একটি "Application_Start" মেথড থাকা উচিত, সেই মেথডে নিচের কোড লাইনটি যোগ করুন
if (ServicePointManager.SecurityProtocol.HasFlag(SecurityProtocolType.Tls12) == false) { ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls12; }
- আপনার পরিবর্তনগুলো Save করুন এবং চেক করুন সমস্যা এখনো আছে কিনা।
সমাধান ৩: সকেট ইমপ্লিমেন্টেশন পরিবর্তন করা
যদি একটি নির্দিষ্ট সকেট ইমপ্লিমেন্টেশনে বাগ বা গ্লিচ থাকে, তবে এটি অ্যাপ্লিকেশনের নির্দিষ্ট উপাদানগুলো সঠিকভাবে কাজ করতে বাধা দিতে পারে যার কারণে এই এরর ট্রিগার হতে পারে। তাই এই ধাপে, আমরা এটি একটি ভিন্ন ইমপ্লিমেন্টেশন ব্যবহার করার জন্য কনফিগার করব। তার জন্য:
- নিশ্চিত করুন আপনার কাছে একটি "StateObject" ক্লাস আছে "public byte[] buffer = new byte[1024], public Socket socket;" এর সাথে।
- "Receive(Socket s)" ফাংশন কল করুন এবং "void ReceiveCallback(IAsyncResult ar)"-এ নিচের কোড কল করুন
SocketError errorCode; int nBytesRec = socket.EndReceive(ar, out errorCode); if (errorCode != SocketError.Success) { nBytesRec = 0; } - এই কোড ইমপ্লিমেন্ট করার পর চেক করুন সমস্যা এখনো আছে কিনা।
সমাধান ৪: কমান্ড লাইন যোগ করা (শুধু Entity Framework-এর জন্য)
আপনি যদি Entity Framework ব্যবহার করেন, তবে সম্ভব একটি নির্দিষ্ট লাইন কোড অনুপস্থিত থাকতে পারে। তাই এই ধাপে, আমরা সেই লাইন কোডটি যোগ করব এই ইশু ফিক্স করার জন্য। তার জন্য:
- আপনার ".edmx" ফাইল খুলুন এবং সেটির নিচে ".context.tt" ফাইল খুলুন।
- ".context.cs" ফাইল খুলুন এবং আপনার কনস্ট্রাক্টরে নিচের কোড লাইনটি যোগ করুন
public DBEntities() : base("name=DBEntities") { this.Configuration.ProxyCreationEnabled = false; // ADD THIS LINE ! } - এই লাইন কোড যোগ করার পর চেক করুন সমস্যা এখনো আছে কিনা।
সমাধান ৫: .NET Framework আপডেট করা
সবকিছু স্মুথলি ফাংশন করার জন্য ".NET" ফ্রেমওয়ার্কের লেটেস্ট ভার্সন দরকার। তাই এই ধাপে, আমরা সাইট থেকে লেটেস্ট ভার্সন ডাউনলোড করব এবং ইনস্টল করব। তার জন্য:
- সেটআপ ডাউনলোড করার জন্য এই লিংকে নেভিগেট করুন।
- ইনস্টলেশন প্রসেস শুরু করার জন্য ".exe" ফাইল এক্সিকিউট করুন।

- Follow করুন অনস্ক্রিন ইনস্ট্রাকশনগুলো অ্যাপ্লিকেশন আপনার কম্পিউটারে ইনস্টল করতে।
- ইনস্টলেশন কমপ্লিট হওয়ার পর চেক করুন সমস্যা এখনো আছে কিনা।