Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Lập trình socket trong Java, 1 server kết nối nhiều client trong Java như thế nào?

  1. #1
    Ngày gia nhập
    12 2010
    Bài viết
    35

    Angry Lập trình socket trong Java, 1 server kết nối nhiều client trong Java như thế nào?

    mình đang học lập trình socket trong Java, giờ mình muốn 1 server kết nối được nhiều client thì phải làm thế nào?
    ban đầu mình có ý tưởng là làm một mảng client rồi gọi phương thức accept() cho từng client nhưng có vẻ không ổn. Search trên mạng thấy nói dùng Multi Thread. ai đã làm hay hiểu biết phần này giảng cho mình hiểu thêm với, có demo càng tốt. cảm ơn mọi người nhiều

  2. #2
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Trích dẫn Nguyên bản được gửi bởi detective009 Xem bài viết
    mình đang học lập trình socket trong Java, giờ mình muốn 1 server kết nối được nhiều client thì phải làm thế nào?
    ban đầu mình có ý tưởng là làm một mảng client rồi gọi phương thức accept() cho từng client nhưng có vẻ không ổn. Search trên mạng thấy nói dùng Multi Thread. ai đã làm hay hiểu biết phần này giảng cho mình hiểu thêm với, có demo càng tốt. cảm ơn mọi người nhiều
    Chính xác là dùng Multi Thread đấy.
    Cho server lắng nghe ở 1 thread. Khi có một client được accept() thì tạo một thread mới để xử lý client đó, server lại tiếp tục lắng nghe ...

  3. #3
    Ngày gia nhập
    10 2010
    Bài viết
    77

    Mặc định làm thế nào để kết nối client đến sever

    mình có bài tập lớn về lập trình socket trong java, có vài vấn đề xin được mọi người giúp.
    mình làm bài tập bằng netbean, sử dụng giao diện ( trong netbean là jFrame có đúng k ? )

    - làm thế nào để client kết nối được với sever ( client gửi yêu cầu, sever sử lí rồi trả lời)?
    - dùng netbean thì chạy sever và client trên 1 máy được k ? có cần dùng máy ảo hay gì đó k?
    - mọi người có tài liệu về lập trình mạng, share cho mình với,đặc biệt là phần jFrame , mọi người giúp mình với... mình mới học nên chưa biết gì ( bạn nào có ví dụ share thì càng tốt, thanks all )

  4. #4
    Ngày gia nhập
    03 2010
    Bài viết
    122

    Bạn có thể tham khảo trong tài liệu mình share.

    • Client và Server có thể chạy trên cùng 1 máy, nhưng phải khác port
    • Để client kết nối với sever thì bạn phải học cái socket, mình thấy nó rất là đơn giản, lên google 1 phát là ra ah, đầy bài hướng dẫn
    • Theo mình biết thì hình như 1 lúc 1 thằng netbean chỉ run đc 1 project, do đó bạn cần mở 2 cái netbean, 1 cái run server, 1 cái run client. Còn để mở 2 cái netbean 1 lúc thì google nhé
    Attached Files Attached Files

  5. #5
    Ngày gia nhập
    12 2010
    Bài viết
    35

    Trích dẫn Nguyên bản được gửi bởi thanthoai101010 Xem bài viết
    mình có bài tập lớn về lập trình socket trong java, có vài vấn đề xin được mọi người giúp.
    mình làm bài tập bằng netbean, sử dụng giao diện ( trong netbean là jFrame có đúng k ? )

    - làm thế nào để client kết nối được với sever ( client gửi yêu cầu, sever sử lí rồi trả lời)?
    - dùng netbean thì chạy sever và client trên 1 máy được k ? có cần dùng máy ảo hay gì đó k?
    - mọi người có tài liệu về lập trình mạng, share cho mình với,đặc biệt là phần jFrame , mọi người giúp mình với... mình mới học nên chưa biết gì ( bạn nào có ví dụ share thì càng tốt, thanks all )
    cậu này sao lại nhảy vô topic của mình post bài hỏi riêng của bạn sao mất lịch sự thế! nhẽ ra phải ra ngoài lập topic mới chứ! nhìn cái nick bị baned thế kia là biết lắm rồi. đừng có vậy nữa nhé bạn

  6. #6
    Ngày gia nhập
    12 2010
    Nơi ở
    Hà Nội
    Bài viết
    1

    Mặc định Lập trình socket trong Java, 1 server kết nối nhiều client trong Java như thế nào?

    Trích dẫn Nguyên bản được gửi bởi detective009 Xem bài viết
    mình đang học lập trình socket trong Java, giờ mình muốn 1 server kết nối được nhiều client thì phải làm thế nào?
    ban đầu mình có ý tưởng là làm một mảng client rồi gọi phương thức accept() cho từng client nhưng có vẻ không ổn. Search trên mạng thấy nói dùng Multi Thread. ai đã làm hay hiểu biết phần này giảng cho mình hiểu thêm với, có demo càng tốt. cảm ơn mọi người nhiều
    Mình cũng đang học về socket. Hiện giờ thì mình đã tạo được Server và kết nối được với nhiều Client, có thể chat được từ Server với 1 trong các Client kết nối với nó, nhưng vấn đề là mình không làm được cho các Client kết nối và chat được với nhau T_T. Dù sao thì bác cũng chỉ cần Server kết nối được nhiều Client nên có thể tham khảo code này của mình

    P/S: Bác nào có thể thì giúp mình luôn nhé Cám ơn trước
    # Server
    Java Code:
    1. import java.io.*;
    2. import java.net.*;
    3.  
    4. public class Server {
    5.     public static void main(String[] args) {
    6.         try{
    7.             ServerSocket serverSocket = new ServerSocket(8888);
    8.             System.out.println("Khởi chạy máy chủ thành công");
    9.             while(true){
    10.                 //Tạo Thread mới khi có 1 Client kết nối thành công
    11.                 new ThreadSocket(serverSocket.accept()).start();
    12.                 System.out.println("Có 1 kết nối đến");
    13.             }
    14.         }
    15.         catch(IOException e){
    16.             System.out.println("Exception: " +e.getMessage());
    17.         }
    18.     }
    19. }

    # Client
    Java Code:
    1. import java.io.*;
    2. import java.net.*;
    3.  
    4. public class Client{
    5.     public static void main(String []args) throws IOException{  
    6.         Socket ClientSocket = new Socket("localhost", 8888);
    7.         System.out.println("Kết nối thành công!");
    8.         //Tạo luồng nhận dữ liệu từ bàn phím
    9.         DataInputStream inFromUser = new DataInputStream(System.in);
    10.         //Tạo luồng nhận dữ liệu từ Server
    11.         DataInputStream inFromServer = new DataInputStream(ClientSocket.getInputStream());
    12.         //Tạo luồng gửi dữ liệu lên Server
    13.         DataOutputStream outToServer = new DataOutputStream(ClientSocket.getOutputStream());
    14.         while(true){
    15.             try{
    16.                 System.out.println("\nClient: ");
    17.                 //Nhập dữ liệu nhập từ bàn phím rồi gửi lên Server
    18.                 String ask = inFromUser.readLine();
    19.                 outToServer.writeBytes(ask+"\n");
    20.                
    21.                 //Đọc dữ liệu Server gửi về rồi in ra
    22.                 String listen=inFromServer.readLine();
    23.                 System.out.println("\nServer: "+listen);
    24.             }
    25.             catch(UnknownHostException e) {
    26.                 System.err.println("Không tìm thấy máy chủ");
    27.                 System.exit(1);
    28.             }
    29.             catch(IOException e){
    30.                 System.err.println("Không thể kết nối với máy chủ");
    31.                 System.exit(1);
    32.             }
    33.     }
    34.     }
    35. }

    # ThreadSocket
    Java Code:
    1. import java.io.*;
    2. import java.net.*;
    3.  
    4. public class ThreadSocket extends Thread{
    5.     Socket socket;
    6.     public ThreadSocket(Socket pSocket){
    7.         this.socket=pSocket;
    8.     }
    9.     @Override
    10.     public void run(){
    11.         try{
    12.             //Tạo luồng nhận dữ liệu từ bàn phím
    13.             DataInputStream inFromServer = new DataInputStream(System.in);
    14.             //Tạo luồng nhận dữ liệu từ Client
    15.             DataInputStream inFromClient = new DataInputStream(socket.getInputStream());
    16.             //Tạo luồng gửi dữ liệu về Client
    17.             DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream());
    18.             while(true)
    19.             {
    20.                 //Đọc dữ liệu từ Client gửi tới rồi in ra
    21.                 String listen = inFromClient.readLine();
    22.                 System.out.println("\nClient: "+listen);
    23.                
    24.                 System.out.println("\nServer: ");
    25.                 //Nhập dữ liệu từ bàn phím rồi gửi về Client
    26.                 String ask = inFromServer.readLine();
    27.                 outToClient.writeBytes(ask+"\n");
    28.             }
    29.         }
    30.         catch(Exception e){
    31.             e.printStackTrace();
    32.         }
    33.     }
    34. }

  7. #7
    Ngày gia nhập
    05 2007
    Nơi ở
    ha noi
    Bài viết
    15

    Source code java đơn giản dễ hiểu có thể tìm tại:
    http://java2s.com

    Để tạo một server làm việc với nhiều client thì phải tìm hiểu kỹ về Thread và cơ chế đồng bộ nhiều Thread trong java.

    Chú ý là trong main thread lắng nghe của server, ở vòng lặp while(true) nên để sleep theo một chu kỳ nào đó nhằm giảm việc chiếm tài nguyên của máy.
    Nghề chính IT
    Lắm khi thảm hại
    Luyện nghề tay trái
    Tán gái làm thơ

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    9

    đúng là dùng multy thread ..... tạo 1 class extends Thread ròi override phương thức run .... chú ý lúc gọi hàm start() vì đây là lúc mà thread sẽ chạy song song với chương trình... ở client sử dụng while( true) nếu các thread riêng rẻ ko quan hệ với nhau thì ổn...hơi khó quản lý việc quá tải

  9. #9
    Ngày gia nhập
    04 2009
    Bài viết
    57

    Các bạn cho mình hỏi này : Có cách nào khác để viết chương trình phục vụ nhiều client kết nối tới mà không sử dụng vòng lặp vô hạn while(true)(bên server) ko ?

  10. #10
    Ngày gia nhập
    05 2007
    Nơi ở
    ha noi
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi svcntt Xem bài viết
    Các bạn cho mình hỏi này : Có cách nào khác để viết chương trình phục vụ nhiều client kết nối tới mà không sử dụng vòng lặp vô hạn while(true)(bên server) ko ?
    Có thể!
    Bạn dùng một timer và lập lịch cho nó. Cứ sau mỗi chu kỳ (ví dụ 1s) lại kiểm tra và xử lý các kết nối.
    Nghề chính IT
    Lắm khi thảm hại
    Luyện nghề tay trái
    Tán gái làm thơ

Các đề tài tương tự

  1. Trả lời: 6
    Bài viết cuối: 28-06-2014, 12:02 PM
  2. Làm sao biết client ngắt kết nối với Server trong Java??
    Gửi bởi songsanh trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 8
    Bài viết cuối: 25-06-2014, 05:36 PM
  3. Thắc mắc lập trình socket trong java
    Gửi bởi mrarsenal10 trong diễn đàn Nhập môn lập trình Java
    Trả lời: 1
    Bài viết cuối: 01-01-2014, 01:27 PM
  4. Đọc Ghi file trong java, báo lỗi java.io.NotSerializableException: java.util.Scanner
    Gửi bởi quyenktpm2 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 3
    Bài viết cuối: 13-08-2013, 11:40 AM
  5. Làm thế nào để gửi 1object từ 1 server đến nhiều client sử dụng socket trong Java
    Gửi bởi manhtoan2211 trong diễn đàn Công cụ, ebooks Java
    Trả lời: 1
    Bài viết cuối: 10-05-2013, 04:53 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn