الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في انقطاع تدفق البيانات واغلاق الـ socket

بدأه JavaPorgrammer في 5 مارس 2013 · 2 رد · 980 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأحبة الكرام .. السلام عليكم ورحمة الله .. 

 

قمت بإنشاء سيرفر يستمع لأكثر من عميل .. الدالة الاساسية :

 

 

 

ServerSocket serverSocket = null;
 try { serverSocket = new ServerSocket(5556); }
 catch (IOException ex) { Logger.getLogger(MakaoServer.class.getName()).log(Level.SEVERE, null, ex); } while (true) 
{
 try {
 Socket connection = serverSocket.accept();
 PlayerConnection playerConn = new PlayerConnection(connection);
 playerConn.start(); } catch (IOException ex) { 
System.out.println("ERROR."); } }

وفي دالة التشغيل في thread : PlayerConnection هي

 

public void run() { 
InputStream input = null;
 while (true) { try {
 input = connection.getInputStream();
 BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
String msg = reader.readLine(); 
System.out.println(msg); 
} catch (IOException ex) {
 Logger.getLogger(PlayerConnection.class.getName()).log(Level.SEVERE, null, ex); } finally { } } }

يستقبل لمرة واحدة فقط ويظهر لي الاستثناء الآتي :

 

 

 

java.net.SocketException: socket closed at java.net.SocketInputStream.socketRead0(Native Method)
 at java.net.SocketInputStream.read(SocketInputStream.java:150) 
at java.net.SocketInputStream.read(SocketInputStream.java:121) 
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
 at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
 at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) 
at java.io.InputStreamReader.read(InputStreamReader.java:184) 
at java.io.BufferedReader.fill(BufferedReader.java:154) 
at java.io.BufferedReader.readLine(BufferedReader.java:317) 
at java.io.BufferedReader.readLine(BufferedReader.java:382) 
at makaoserver.PlayerConnection.run(PlayerConnection.java:38)

 

هل من اقتراحات ؟

 

شاكر ومقدر للجميع.

تم تعديل هذه المشاركة بواسطة JavaPorgrammer في 5 مارس 2013 في 12:07

عفواً أحبتي انقطاعي بسبب الدراسة دعواتكم بالتوفيق..

{ لا ينال العلم مستحٍ ولا مستكبر }

#2

جرب وضع الجمل التالية خارج wihile loop ...

 

input = connection.getInputStream();

 BufferedReader reader = new BufferedReader(new InputStreamReader(input));

تم تعديل هذه المشاركة بواسطة MKSoft في 5 مارس 2013 في 14:17

#3
    public void run() {

        try {

            InputStream input = connection.getInputStream();

            BufferedReader reader = new BufferedReader(new InputStreamReader(input));

            String msg = "";

            while ((msg = reader.readLine()) != null) {

                System.out.println(msg);

            }

        } catch (IOException ex) {

            Logger.getLogger(PlayerConnection.class.getName()).log(Level.SEVERE, null, ex);

        } finally {

            //close the read stream and socket connection

        }

    }

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 9 مارس 2013 في 14:43

1

Software Developer
Mahmoudkelany.com


 

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…