Java.net.SakerException: ভাঙা পাইপ কীভাবে ঠিক করবেন?


150

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

java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
        at java.io.FilterOutputStream.write(FilterOutputStream.java:80)
        at org.apache.commons.httpclient.methods.ByteArrayRequestEntity.writeRequest(ByteArrayRequestEntity.java:90)
        at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)

কেউ কী এই ব্যতিক্রম ঘটায় এবং কীভাবে এটির ডিবাগ করবেন তার পরামর্শ দিতে পারে?


1
এই চেষ্টা করতে সবচেয়ে ভালো stackoverflow.com/questions/10142409/...
Vimalkumar নটরাজ

উত্তর:


81

এটি দ্বারা সৃষ্ট:

  • সাধারণত, যখন অন্য প্রান্তটি ইতিমধ্যে এটি বন্ধ করে দেয় তখন কোনও সংযোগে লেখা;
  • কম সাধারণত, পিয়ার ইতিমধ্যে তার শেষে মুলতুবি থাকা সমস্ত ডেটা না পড়ে সংযোগটি বন্ধ করে দেয়।

সুতরাং উভয় ক্ষেত্রেই আপনার দুর্বল সংজ্ঞা দেওয়া বা প্রয়োগ করা অ্যাপ্লিকেশন প্রোটোকল রয়েছে।

তৃতীয় কারণ রয়েছে যা আমি এখানে দলিল করব না তবে এর মধ্যে সংযোগটি যথাযথভাবে বন্ধ করার চেয়ে পুনরায় সেট করার জন্য পীর ইচ্ছাকৃত পদক্ষেপ নেওয়া জড়িত।


4
আপনি দয়া করে এটি সনাক্ত এবং সংশোধন করতে আমাকে সাহায্য করতে পারেন? মূলত, কারণ এবং সংশোধন কিভাবে?

4
আমি আছে কারণ নিশ্চিত করেছে। আপনি লিখছেন যখন অন্য প্রান্তটি ইতিমধ্যে সংযোগটি বন্ধ করে দিয়েছে। ফিক্সটি করতে হবে না। অন্য প্রান্তটি এটি পড়ছে না, যাইহোক কোনও পয়েন্ট নেই। যেমনটি আমি বলেছি, এটি যদি ঘটে থাকে তবে আপনার অ্যাপ্লিকেশন প্রোটোকল স্পেসিফিকেশন বা বাস্তবায়নে কিছু ভুল হয়েছে, সম্ভবত আপনার কাছে এটিও নেই।
মারকুইস

26
যদি সার্ভারের পক্ষের এইচটিটিপি অ্যাপ্লিকেশনটি ব্রোকন পাইপ ব্যতিক্রম পেয়ে থাকে তবে এর অর্থ কেবল ক্লায়েন্ট ব্রাউজারটি অন্য পৃষ্ঠায় চলে গেছে / চলে গেছে / সময়সীমা বেঁধে গেছে / ইতিহাসে ফিরে গেছে / যাই হোক না কেন। এটি ভুলে যাও.
মার্কুইস

3
ব্রাউজারে একটি অ্যাজ্যাক্স অনুরোধ বাতিল করার সময় আমরা এই ব্যতিক্রমটি দেখেছি (ব্যবহার করে XMLHttpRequest.abort())।
ওবেকার

2
একটি সম্ভাব্য কারণ হ'ল একটি প্রক্সি বা এইচটিটিপি সার্ভারটি খুব শীঘ্রই সংযোগটি বন্ধ করে দেবে। উদাহরণস্বরূপ একটি সংক্ষিপ্ত সংক্ষিপ্ত সময়সীমা সহ আপনার J2EE সার্ভার এবং অ্যাপ্লিকেশন ক্লায়েন্টগুলির মধ্যে অ্যাপাচি এইচটিপি সার্ভার। কমপক্ষে আমাদের প্রযোজনার পরিবেশে এটিই ঘটেছিল। পৃষ্ঠাগুলি সম্পর্কে গ্রাহকদের অভিযোগ পুরোপুরি লোড হচ্ছে না আমরা এই ত্রুটিটি জেবস লগটিতে দেখেছি। কিছু পরীক্ষার পরে আমরা লক্ষ্য করেছি যে সমস্যাটি একটি দুর্বল কনফিগার করা এইচটিপি সার্ভার।
রিকার্ডো ভিলা

32

আমাদের ক্ষেত্রে আমাদের অ্যাপ্লিকেশন সার্ভারে একটি লোড পরীক্ষা করার সময় আমরা এটির অভিজ্ঞতা পেয়েছি। সমস্যাটি দেখা গেল যে আমাদের জেভিএমে অতিরিক্ত মেমরি যুক্ত করা দরকার কারণ এটি শেষ হয়ে গেছে। এটি সমস্যার সমাধান করেছে।

JVM- তে উপলব্ধ মেমরিটি বাড়ানোর চেষ্টা করুন এবং যখন আপনি এই ত্রুটিগুলি পান তখন মেমরির ব্যবহার নিরীক্ষণ করুন।


4
লোড পরীক্ষার সময় আমি একই সমস্যা পেয়েছি। আমার ধারণা ডেটা উত্পন্ন হতে অনেক সময় লাগে এবং লোড টেস্টিং সরঞ্জামটি ডেটাটি দীর্ঘক্ষণ অপেক্ষা করে না তবে এটি সংযোগটি বন্ধ করে দেয়। আমি আপনার ক্ষেত্রে, মেমরি যুক্ত করে ডেটা উত্পন্ন প্রক্রিয়া সময়কাল হ্রাস করতে পারে তাই লোড পরীক্ষা সময়সীমা সীমা ছাড়াই সমস্ত ডেটা পেয়ে যায়। স্মৃতিশক্তি বাড়ানোর একটি বিকল্প হ'ল লোড টেস্ট সরঞ্জামের সময়সীমা বাড়ানো।
জুলিয়েন ক্রোনেগ

2
স্পষ্টতই কম মেমোরির কারণে অ্যাপ্লিকেশনটি গ্রহণকারী সকেটটি বন্ধ করে দিয়েছে বা একই প্রভাব সহ সত্যই পুরোপুরি প্রস্থান করবে। স্বল্প স্মৃতি নিজেই নষ্ট পাইপগুলির কারণ হয় না।
লার্নের মারকুইস

1
এটি আসলে আমাদের ভারী-লোড অ্যাপ্লিকেশন চলাকালীন একটি সমস্যা হিসাবে উপস্থিত হয়
রুবেন ডি ভ্রিজ

7

সকেটএক্সেপশন: ভাঙা পাইপ, 'অন্য প্রান্ত' (ক্লায়েন্ট বা সার্ভার) সংযোগটি বন্ধ করার কারণে ঘটে যখন আপনার কোডটি কানেকশন থেকে পড়ছে বা লিখছে।

এটি ক্লায়েন্ট / সার্ভার অ্যাপ্লিকেশনগুলিতে একটি খুব সাধারণ ব্যতিক্রম যা অ্যাপ্লিকেশন নিয়ন্ত্রণের বাইরে ক্লায়েন্ট বা সার্ভারের কাছ থেকে ট্র্যাফিক গ্রহণ করে। উদাহরণস্বরূপ, ক্লায়েন্টটি একটি ব্রাউজার। যদি ব্রাউজারটি একটি অজ্যাক্স কল করে এবং / অথবা ব্যবহারকারী কেবল পৃষ্ঠা বা ব্রাউজারটি বন্ধ করে দেয়, তবে এটি কার্যকরভাবে অপ্রত্যাশিতভাবে সমস্ত যোগাযোগকে হত্যা করতে পারে। মূলত, অন্য প্রান্তটি তাদের অ্যাপ্লিকেশনটি বন্ধ করার সময় আপনি এই ত্রুটিটি দেখতে পাবেন এবং আপনি এটির প্রত্যাশা করছিলেন না।

আপনি যদি নিজের অ্যাপ্লিকেশনটিতে এই ব্যতিক্রমটি অনুভব করেন তবে এর অর্থ হ'ল আইও (ইনপুট / আউটপুট) কোথায় ঘটে তা আপনার কোডটি পরীক্ষা করা উচিত এবং এই আইওএক্সেপশন ধরার জন্য চেষ্টা / ক্যাচ ব্লক দিয়ে এটি মোড়ানো উচিত। তারপরে, আপনি কীভাবে এই আধা-বৈধ পরিস্থিতিটি পরিচালনা করতে চান তা সিদ্ধান্ত নিতে হবে।

আপনার ক্ষেত্রে, এখনও আপনার নিয়ন্ত্রণ রয়েছে এমন প্রথম স্থানটিতে কল করা HttpMethodDirector.executeWithRetry - সুতরাং সেই কলটি চেষ্টা / ধরার ব্লক দিয়ে আবৃত রয়েছে তা নিশ্চিত করুন এবং আপনি কীভাবে ফিট দেখতে পাবেন তা পরিচালনা করুন।

আমি দৃug়ভাবে ডিবাগ / ট্রেস স্তর ব্যতীত অন্য কিছুতে সকেট এক্সসেপশন-ব্রোকেন পাইপ নির্দিষ্ট ত্রুটিগুলি লগ করার বিরুদ্ধে দৃ strongly়ভাবে পরামর্শ দেব। অন্যথায়, লগগুলি পূরণ করে এটি ডস (পরিষেবা অস্বীকার) এর ফর্ম হিসাবে ব্যবহার করা যেতে পারে। এই সাধারণ দৃশ্যের জন্য আপনার অ্যাপ্লিকেশনটিকে কঠোর এবং নেতিবাচক-পরীক্ষা করার চেষ্টা করুন।


আপনি যখন পীরটি পড়ছেন তখন সংযোগটি বন্ধ করে দেওয়ার কারণে এটি হয় না। এটি ভিন্ন, প্রবাহের শেষ, শর্তের কারণ হয়ে থাকে যা প্রায়শই ব্যতিক্রম নয়।
মার্কুইস

5

সমস্ত খোলার স্ট্রিম এবং সংযোগগুলি যথাযথভাবে বন্ধ করা দরকার, সুতরাং পরের বার আমরা urlConnication অবজেক্টটি ব্যবহার করার চেষ্টা করব, এটি কোনও ত্রুটি ছুঁড়ে না। উদাহরণ হিসাবে, নিম্নলিখিত কোড পরিবর্তনটি আমার জন্য ত্রুটিটি স্থির করে।

আগে:

OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write("Some text");
bw.close();
out.close();

পরে:

OutputStream os = urlConnection.getOutputStream();
OutputStream out = new BufferedOutputStream(os);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write("Some text");
bw.close();
out.close();
os.close(); // This is a must.

8
এটি আসলে খুব অদ্ভুত, কারণ একটি BufferedOutputStreamসর্বদা close()তার অন্তর্নিহিত আউটপুট প্রবাহকে কল করে (এটি এর আউটপুট প্রবাহে urlConnection)। দেখুন docs.oracle.com/javase/6/docs/api/java/io/... এবং docs.oracle.com/javase/6/docs/api/java/io/... সুতরাং যখন আপনি কল os.close()এটি আগে থেকেই বন্ধ করা উচিত ছিল । কোন?
ওভেকার

4
'os.close ()' 'অবশ্যই' নয়। উভয়ই এই বিষয়টির জন্য 'আউটক্লোজ ()' নয়। 'bw.close ()' যথেষ্ট। @ ওবেদক সঠিক। এই পরিবর্তনটি সমস্যার সমাধান করতে পারে না।
লার্নের মারকুইস

1

আমি এফটিপি সার্ভারের মাধ্যমে ডেটা ডাউনলোডের কার্যকারিতা বাস্তবায়ন করেছি এবং সেই ডাউনলোডটি আবার শুরু করার সময় সেখানেও একই ব্যতিক্রম পেয়েছি। এই ব্যতিক্রমটি সমাধান করার জন্য, আপনাকে সর্বদা পূর্বের সেশন থেকে সংযোগ বিচ্ছিন্ন করতে হবে এবং ক্লায়েন্টের নতুন উদাহরণ তৈরি করতে হবে এবং সার্ভারের সাথে নতুন সংযোগ স্থাপন করতে হবে। এই একই দৃষ্টিভঙ্গি HTTPClient জন্যও সহায়ক হতে পারে।


এই ত্রুটিটি সমাধান করার জন্য আপনাকে বদ্ধ সকেট ব্যবহার করার চেষ্টা এড়াতে হবে।
লার্নের মারকুইস

3
হাঃ হাঃ হাঃ. আপনি SO- তে সমস্ত বগাস পরামর্শ সংশোধন করে সারাদিন অপচয় করতে পারেন।
ডেভ

2
@ ডেভ প্রকৃতপক্ষে মাঝে মাঝে আমি করি.
মারকুইস

1

আমি একটি সাধারণ জাভা অ্যাপ্লিকেশন বিকাশ করার সময় আমি একই সমস্যা করব যা একটি নির্দিষ্ট টিসিপি শুনে। সাধারণত, আমার কোনও সমস্যা ছিল না, তবে আমি যখন কিছু স্ট্রেস টেস্ট চালাই তখন আমি লক্ষ্য করেছি যে কিছু সংযোগ ত্রুটির সাথে ভেঙে গেছেsocket write exception

তদন্তের পরে আমি একটি সমাধান পেয়েছি যা আমার সমস্যার সমাধান করে। আমি জানি এই প্রশ্নটি বেশ পুরানো, তবে আমি আমার সমাধানটি ভাগাভাগি করতে পছন্দ করি, কেউ এটি দরকারী হিসাবে খুঁজে পেতে পারেন।

সার্ভারসকেট তৈরিতে সমস্যা ছিল। আমি জাভাডোক থেকে পড়েছি সেখানে 50 টি মুলতুবি সকেটের ডিফল্ট সীমা রয়েছে। আপনি যদি অন্য কোনও সংযোগ খোলার চেষ্টা করেন তবে এগুলি প্রত্যাখ্যান করা হবে। সমাধানটিতে সার্ভারের পাশে এই ডিফল্ট কনফিগারেশনটি পরিবর্তন করা যায়। নিম্নলিখিত ক্ষেত্রে, আমি একটি সকেট সার্ভার তৈরি করেছি যা টিসিপি পোর্টে শুনবে 10_000এবং সর্বাধিক 200মুলতুবি থাকা সকেট গ্রহণ করবে ।

new Thread(() -> {
      try (ServerSocket serverSocket = new ServerSocket(10_000, 200)) {
        logger.info("Server starts listening on TCP port {}", port);

        while (true) {
          try {
            ClientHandler clientHandler = clientHandlerProvider.getObject(serverSocket.accept(), this);
            executor.execute(clientHandler::start);
          } catch (Exception e) {
            logger.error(e.getMessage());
          }
        }

      } catch (IOException | SecurityException | IllegalArgumentException e) {
        logger.error("Could not open server on TCP port {}. Reason: {}", port, e.getMessage());
      }
    }).start();

এর Javadoc থেকে ServerSocket :

আগত সংযোগ ইঙ্গিতগুলির জন্য সর্বাধিক সারি দৈর্ঘ্য (সংযোগ করার জন্য একটি অনুরোধ) ব্যাকলগ প্যারামিটারে সেট করা আছে। যদি সারিটি পূর্ণ হয় কোনও সংযোগের ইঙ্গিতটি আসে তবে সংযোগটি অস্বীকার করা হয়।


0

সমস্যাটি হতে পারে যে আপনার মোতায়েন করা ফাইলগুলি সঠিক আরএমআই পদ্ধতিতে আপডেট করা হয়নি। আপনার আরএমআই ইন্টারফেসে আপডেট হওয়া প্যারামিটার রয়েছে বা আপনার ক্লায়েন্টের কাছে নেই এমন ডেটা স্ট্রাকচার রয়েছে কিনা তা পরীক্ষা করে দেখুন। অথবা আপনার আরএমআই ক্লায়েন্টের কোনও প্যারামিটার নেই যা আপনার সার্ভার সংস্করণ থেকে আলাদা from

এটি কেবল শিক্ষিত অনুমান। আমার সার্ভার অ্যাপ্লিকেশনটির ক্লাস ফাইলগুলি পুনরায় স্থাপন এবং পুনরায় পরীক্ষার পরে "ব্রোকেন পাইপ" এর সমস্যাটি চলে গেল।


আরএমআই পদ্ধতি কী ? আরএমআই প্রশ্নের মধ্যে উল্লেখ করা হয় নি।
লার্নের মারকুইস

0

উপরের উত্তরগুলি এর কারণ ব্যাখ্যা করে java.net.SocketException: Broken pipe: অন্য প্রান্তটি সংযোগটি বন্ধ করে দিয়েছে। আমি যখন এটির মুখোমুখি হয়েছি তখন অভিজ্ঞতাটি ভাগ করে নিতে চাই:

  1. ক্লায়েন্টের অনুরোধে, Content-Typeশিরোনামটি ভুলভাবে অনুরোধের বডিটির চেয়ে বড় আকারে সেট করা হয় (বাস্তবে কোনও শরীর ছিল না)
  2. টমক্যাট সকেটের নীচের পরিষেবাটি সেই মাপের বডি ডেটার জন্য অপেক্ষা করছিল (HTTP টিসিপিতে থাকে যা এনক্যাপসুলেট করে এবং সরবরাহ সরবরাহ করে ...)
  3. যখন 60 সেকেন্ডের মেয়াদ শেষ হয়ে যায়, টমক্যাট ব্যতিক্রম সময় ছুঁড়ে দেয়: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception java.net.SocketTimeoutException: null
  4. সময়সীমা ব্যতিক্রমের কারণে ক্লায়েন্ট স্থিতি কোড 500 সহ একটি প্রতিক্রিয়া পান।
  5. ক্লায়েন্ট ঘনিষ্ঠ সংযোগ (কারণ এটি প্রতিক্রিয়া গ্রহণ করে)।
  6. টমক্যাট ছুড়ে দেয় java.net.SocketException: Broken pipeকারণ ক্লায়েন্ট এটি বন্ধ করে দিয়েছে।

কখনও কখনও, টমক্যাট ভাঙা পাইপ ব্যতিক্রম নিক্ষেপ করে না, কারণ সময়সীমা ব্যতিক্রম সংযোগটি বন্ধ করে দেয়, কেন এই ধরনের পার্থক্য আমাকেও বিভ্রান্ত করছে।


Content-Typeহেডার একটি সংখ্যা নির্দিষ্ট করে না, তাই এটি কিছু আর 'বৃহত্তর' হতে পারে না। সময়সাপেক্ষ ব্যতিক্রমগুলি সকেটটি বন্ধ করে না। উত্তর যা কিছু তা বোঝায় না।
লার্নের মারকুইস

@ ইজেপি সম্ভবত এটি সামগ্রীর দৈর্ঘ্য ছিল, মনে রাখবেন না। আমি মনে করি টমকেটের সময়সীমাটি এটি 500 ফিরিয়ে দেয়, যখন ক্লায়েন্ট এই প্রতিক্রিয়াটি গ্রহণ করে এবং সংযোগটি বন্ধ করে দেয়, যা অবশেষে টমক্যাটটির প্রত্যাশার মতো পর্যাপ্ত বাইটগুলি গ্রহণ করে না।
টিইনা

টমক্যাট যদি 500 প্রেরণ করে তবে এটি ইতিমধ্যে যা পরিকল্পনা করেছে তা ইতিমধ্যে পেয়েছে। তবুও বোঝা যায় না।
মার্কুইস

@ user207421 সত্যিই নয়। টমক্যাট 500 প্রেরণ করে কারণ এটি প্রত্যাশিত সমস্তটি পায় না, তবে সময়সীমা শেষ।
টাইনা

-1

JavaDoc:

আগত সংযোগ ইঙ্গিতগুলির জন্য সর্বাধিক সারি দৈর্ঘ্য (সংযোগ করার জন্য একটি অনুরোধ) সেট করা হয়েছে 50।

উদাহরণস্বরূপ, আপনার সার্ভারসকেটের "ব্যাকলগ" পরামিতিটি বাড়ানো উচিত

int backlogSize = 50 ;
new ServerSocket(port, backlogSize);

1
ব্যাকলগ বাড়ানো কোনও 'ভাঙা পাইপ' ত্রুটির সমাধান করবে না।
লার্নের মারকুইস

1
তবে এটি আমার পক্ষে সাহায্য করেছিল
TheSecond

@ ইজেপি আমি লিনাক্সে একটি সার্ভার পরীক্ষা করেছি এবং এটি কার্যকর হয়েছে, তবে ম্যাক ওএসে - তা হয়নি। এবং ব্যাকলগের আকার বাড়ানো আমাকে সাহায্য করেছিল। আমি জানতাম না যে সর্বোচ্চ আকার 50.
TheSecond

1
আপনি অন্য কিছু পরীক্ষা করেছেন। শোনো ব্যাকলগের এই ব্যতিক্রমের সাথে কোনও সম্পর্ক নেই। এটি ক্লায়েন্টের সংযোগ প্রত্যাখ্যান বা সময়সীমাকে সহায়তা করে। 'সকেট বন্ধ' ব্যতিক্রম নয়, যা স্থানীয় ত্রুটি।
লার্নের মারকুইস

সকেট পুলের জন্য (যেমন টমক্যাটের মতো এইচটিটিপি সার্ভার) সেখানে সার্ভিসিং থ্রেডগুলি প্রেরণের আগে সার্ভারের "কুইট" হবে এবং সংযুক্ত পুলের থ্রেডের সংখ্যার জন্য পৃথক সেটিংয়ের জন্য মুলতুবি থাকা "সংখ্যার গ্রহণযোগ্য" সংখ্যার জন্য কনফিগারেশন সেটিংস রয়েছে। যাইহোক, এর কোনওটিই এই সমস্যার সাথে সম্পর্কিত নয় যে সংযোগটি প্রতিষ্ঠিত হওয়ার পরে সার্ভার "গ্রহন ()" - আউটপুট স্ট্রিমটি হঠাৎ (অজান্তে) "বন্ধ" হয়ে যায়।
ড্যারেল টিগু

-1

কারণটি হ'ল দূরবর্তী পিয়ারটি তার সকেটটি বন্ধ করে দেয় (উদাহরণস্বরূপ ক্র্যাশ), সুতরাং আপনি যদি উদাহরণস্বরূপ তাকে ডেটা লেখার চেষ্টা করেন তবে আপনি এটি পাবেন। এটি সমাধানের জন্য, সকেট ক্রিয়াকলাপগুলিতে পড়ুন / লিখুন রক্ষা করুন (ধরার চেষ্টা করুন), তারপরে ক্যাচটিতে হারানো সংযোগের কেসটি পরিচালনা করুন (সংযোগ পুনর্নবীকরণ, প্রোগ্রাম বন্ধ করুন, ইত্যাদি):

 try {
      /* your code */
 } catch (SocketException e) {
      e.printStackTrace();
      /* insert your failure processings here */
 }

3
এই হবে লগ ইন করুন সমস্যা, কিন্তু এটি করা হবে না সমাধান তাদের। তাদের সমাধানের জন্য আপনাকে (ক) যেকোন সম্ভাব্য অ্যাপ্লিকেশন প্রোটোকল ত্রুটিগুলি সমাধান করতে হবে এবং (খ) মৃত সংযোগগুলি বন্ধ করতে হবে । কেবল লগ ব্যতিক্রম নয়, যার বেশিরভাগই মারাত্মক।
লার্নের মারকুইস

@ ইজেপি: অবশ্যই আপনি যখন কোনও ত্রুটি ধরেন তখন আপনার ক্যাকেটের বিবৃতিতে আপনার সকেট (প্রসঙ্গ) পরিষ্কার করা উচিত। বিকাশকারী কী করতে চলেছে তা অনুমান করতে পারি না। পরিষ্কার পদ্ধতিটি করা নিজের হাতে
এলহাদি ডিপি ıpɐɥ ן ǝ

অ্যাপ্লিকেশন প্রোটোকল সমস্যা যা ত্রুটি সৃষ্টি করে তা সংশোধন করা বিকাশকারীদের উপর নির্ভর করে এবং রয়েছে is আমি আপনার উত্তর বা কোড যা কিছুই তাকে সহায়তা করে না তাই করো. 'এর মধ্যে পড়ুন / লেখার ক্রিয়া সন্নিবেশ করুন' এটি ঠিক করে না। আপনার উত্তরটি ভুল।
লার্নের মারকুইস

@ ব্যবহারকারী 207421, বিকাশকারী ভাঙা পাইপ কীভাবে ঠিক করবেন তা জিজ্ঞাসা করেন। আমি তাকে প্রথমে তার প্রোগ্রামটি সুরক্ষিত করার জন্য ইঙ্গিত দিয়েছি (ধরার চেষ্টা করুন)। এটি ক্রাশ হওয়া প্রোগ্রাম এড়াতে হবে। তারপরে ক্লিন প্রসেসিংয়ের জন্য তাকে নির্দেশ করতে আমি একটি মন্তব্য inোকান। সাধারণত একটি ভাঙ্গা পাইপের ত্রুটিতে, অনেকগুলি বিকল্প রয়েছে, আমি প্রোগ্রামের উদ্দেশ্যটি অনুমান করতে পারি না, প্রোগ্রামটি বন্ধ করতে পারি, সংযোগটি পুনর্নবীকরণ করতে পারি, ডেটাটি নষ্ট হয় কি না ইত্যাদি। কোন বিকল্পটি করা উচিত তা সিদ্ধান্ত নেওয়া প্রোগ্রামারটির উপর নির্ভর করে? আমার উত্তর দিয়ে কি ভুল ছিল?
এলহাদী ডিপি ıpɐɥ ן
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.