سؤال

أقوم بإنشاء تطبيق خادم عميل دردشة متعدد الخيوط.في اتصال الخادم أستخدم طريقة PrintWriter println(String s) لكتابة الرد على العميل.

PrintWriter out;
String msg = in.readLine();
String response = "";
if (msg.startsWith("nick: ") {
    response = protocol.authenticate(msg); //returns a String that says "welcome " + nick
    //if there are messages pending for the author who logged in add them to the response String
         response+="\r\n"+textmsg;
} else { ... }
out.println(response);

عندما أقوم بتشغيل العميل، الذي يستخدم طريقة BufferedReader readLine() للقراءة من الخادم، أحصل على رسالة الترحيب ولكن ليس الرسالة المعلقة للعميل، ولكن إذا استخدمت

response+=textmsg;

إنه يعمل، لذا أفترض أن السبب هو أنني أستخدم ولكني ما زلت بحاجة إلى طباعة سطر جديد بين هاتين الرسالتين.ماذا علي أن أفعل؟

يحرر بعد قبول الجواب:في النهاية اخترت استخدام OutputStream وInputStream حتى أتمكن من إرسال كل أنواع السلاسل التي أريدها، حتى مع .

هل كانت مفيدة؟

المحلول

إما الاتصال println مرة واحدة لكل سطر إخراج (مرتين) أو استخدمه فقط \n, ، بدون ال \r.هذا هو السطر الجديد القياسي لـ Java و \r\n هو تسلسل نهاية السطر خاص بنظام التشغيل Windows.وبطبيعة الحال، في نهاية العميل عليك الآن الاتصال readLine مرتين كذلك.لا توجد وسيلة للاتصال readLine مرة واحدة واحصل على سطرين.إذا كنت بحاجة إلى محدد مخصص، فيجب عليك استخدام شيء آخر، وليس \n.

نصائح أخرى

استخدم println مع كتابة الطباعة، ل \ n.

يستخدم println او استعمل %n مع printf

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top