Toggle Theme Editor
Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Charcoal

Hỏi về làm GUI cho server

Discussion in 'Xây dựng ứng dụng server-client desktop' started by hyhuu99, 29/9/17.

  1. hyhuu99

    hyhuu99 New Member

    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();
               }
             
        }
     
  2. JackV

    JackV Administrator Staff Member

    Vậy bạn viết multithread nhé
     
  3. dùng asynctask, runnable hoặc thread nhé. nếu không đoạn code kia nó chạy ở main thread làm treo app ngay
     
  4. Joe

    Joe Thành viên VIP

    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 == nullSystem.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();
            }
     
    macarong35 likes this.

Chia sẻ trang này

Loading...