Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Dùng socket để lập trình 1 chương trình chat như thế nào trên Linux ?

  1. #1
    Ngày gia nhập
    06 2012
    Bài viết
    2

    Mặc định Dùng socket để lập trình 1 chương trình chat như thế nào trên Linux ?

    Mình muốn viết 1 chương trình chat bằng C trên Linux.
    Ý tưởng của mình là viết 2 chương trình client và sever, rồi dùng socket để trao đổi với nhau.
    Mình dùng 1 vòng while(1) vô hạn để có thể đọc liên tiếp từ socket đến. Nhưng vấn đề của mình là: Vì C thực hiện từng câu lệnh theo thứ tự trên xuống, Nên mình không thể write vào socket bất cứ khi nào mình muốn, mà phải chờ bên kia trả lời mới có thể chát tiếp đc.
    Mình đã từng viết bằng JAVA, khi đó chỉ việc tạo từng thread riêng biệt cho việc ghi socket và đọc socket. Nhưng không biết ở trong C làm thế nào? Mong các cao thủ giúp đỡ!

  2. #2
    Ngày gia nhập
    08 2011
    Bài viết
    117

    để tạo thread với C trong linux bạn có thể dùng cái này :
    https://computing.llnl.gov/tutorials/pthreads/

  3. #3
    Ngày gia nhập
    06 2012
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi CIMinuv Xem bài viết
    để tạo thread với C trong linux bạn có thể dùng cái này :
    Cám ơn bạn! Quả là tài liệu bổ ích.
    Mình cũng tự tra và thử dùng hàm fork() để tạo thêm process con. Và cũng đã giải quyết đc vấn đề. Nhưng nếu muốn chát room chắc không thể thiếu tài liệu bạn cung cấp.
    Một lần nữa xin cám ơn!

  4. #4
    Ngày gia nhập
    09 2008
    Bài viết
    57

    Bạn cũng nên tìm hiểu về cơ chế IO nữa như Polling, Blocking, Unblocking. Một kiểu được dùng nhiều hiện nay là Un-blocking Server.
    Bạn có thể tham khảo cái này : http://publib.boulder.ibm.com/infoce...6xnonblock.htm
    Ghi rõ license hoặc 0 điểm

  5. #5
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Trích dẫn Nguyên bản được gửi bởi CIMinuv Xem bài viết
    để tạo thread với C trong linux bạn có thể dùng cái này :
    mình cũng có lập trình socket với linux, tạo thread bằng pthread là chuẩn rồi. Nhưng mình cũng xin nói thêm: Ví dụ này sử dụng hàm select để xác định trạng thái của các socket. Kiểu này bây giờ là cổ rồi và không thể đáp ứng với số lượng kết nối lớn. Các lập trình viên khác đã vấp phải vấn đề khi server phải đáp ứng nhiều kết nối cùng lúc. Họ đặt tên bài toán này là the C10k problem.

    Nếu bạn muốn tìm hiểu sâu về socket, bạn nên tìm hiểu về epoll , các thư viện libevent, libev.


    Nếu chỉ dùng để lập trình bài tập, dừng lại ở mức bài tập, đồ án môn học, thì bạn sử dụng select là đủ

  6. #6
    Ngày gia nhập
    05 2013
    Nơi ở
    HN
    Bài viết
    3

    Mặc định Dùng socket để lập trình 1 chương trình chat như thế nào trên Linux ?

    Trích dẫn Nguyên bản được gửi bởi thanhtuan.nda Xem bài viết
    Nhưng vấn đề của mình là: Vì C thực hiện từng câu lệnh theo thứ tự trên xuống, Nên mình không thể write vào socket bất cứ khi nào mình muốn, mà phải chờ bên kia trả lời mới có thể chát tiếp đc.
    !
    Em cũng đang bập bẹ vs đề tài bài tập lớn tương tự, vấn đề này của bác có lẽ là do bác cấu hình cho socket là sock_stream...bác thử định dạng nó kiểu sock_dgram xem sao

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

  1. Lập trình socket trong C trên Linux ?
    Gửi bởi vietwow trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 5
    Bài viết cuối: 04-10-2014, 11:45 PM
  2. Bài tập C++ Cách tạo hàm trong lập trình socket C trên Linux?
    Gửi bởi cayxanh20005 trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 2
    Bài viết cuối: 21-01-2013, 08:44 PM
  3. Socket nên dùng TcpClient hay socket để làm ứng dụng chat?
    Gửi bởi tuanngocpt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 13
    Bài viết cuối: 06-10-2012, 11:28 AM
  4. Lập trình C++ hỏi về socket chat giữa client và sever
    Gửi bởi anhhung90 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 16-05-2010, 11:42 AM
  5. Lập trình C trong linux. Cách biên dịch chương trình C trên Linux như thế nào?
    Gửi bởi thangbn trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 5
    Bài viết cuối: 30-05-2009, 11:38 AM

Tags của đề tài này

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