Hỏi về làm GUI cho server

hyhuu99

New Member
11/2/17
1
0
0
23
Mấy bác cho em hỏi , hiện em đang viết cái GUI cho server chạy , mà em test thử thì nó bị break ngay cái vòng lặp chờ kết nối của thằng socket, theo em biết thì tới ngay cái vòng lặp while(true)... thì nó sẽ lặp hoài để chờ client con conect vào, mà nếu nó lặp hoài thì thằng GUI của em bị break không chạy được tiếp theo, Vậy giờ mấy bác cho em hỏi em viết như thế nào để cho nó không break được ạ, em cảm ơn nhiều .
Code:
public server(int port) throws IOException
    {
         
        try {
               listener = new ServerSocket(port);
               System.out.println("Server is waiting to accept user...");
           } catch (IOException e) {
               System.out.println(e);
               System.exit(1);
           }
        try {
               while (true) {
                   // Chấp nhận một yêu cầu kết nối từ phía Client.
                   // Đồng thời nhận được một đối tượng Socket tại server.
                   Socket socketOfServer = listener.accept();
                   System.out.println("Accept a client!");
                   svt = new ServiceThread(socketOfServer, clientNumber++);
               }
           } finally {
               listener.close();
           }
         
    }
 

Joe

Thành viên VIP
21/1/13
2,885
1,288
113
Your codes are redundant and may cause wrong result.
Java prior 8
PHP:
        ServerSocket listener;
        try{
              listener = new ServerSocket(port);
               System.out.println("Server is waiting to accept user...");
       /*
           } catch (IOException e) {
               System.out.println(e);
               System.exit(1);
           }
        try {
       */
               while (true) {
                  // Socket socketOfServer = listener.accept(); // no need to create a new socket
                  // is ServiceThread an autostarting thread?? If no, the start() is missing
                   svt = new ServiceThread(listener.accept(), clientNumber++);
                   System.out.println("Accept a client!");
               }
     
        } catch (Exception e) {
           e.printStackTrace();
           System.out.println("Troubles:");
           if (listener == null) System.exit(1);
            try {
                      listener.close();
           } catch (Exception ex) { }
        } finally {       
          if (listener != null) {
                try {
                      listener.close();
               } catch (Exception ex) { }
           }
        }
Java 8
PHP:
        // autoclose for listener <<<<<
        try (ServerSocket listener = new ServerSocket(port)) {
               System.out.println("Server is waiting to accept user...");
               while (true) {  
                   // is ServiceThread an autostarting thread?? If no, the start() is missing
                   svt = new ServiceThread(listener.accept(), clientNumber++);
                   System.out.println("Accept a client!");
               }     
        } catch (Exception e) {
            System.out.println("Troubles:");
            e.printStackTrace();
        }
 
  • Like
Reactions: macarong35