Cách xây dựng server_relay.c và client.c để nhắn tin như Yahoo chat bằng C?

không, mình hoc chuyên về ứng dụng java và lập trinh web, tự nhiên đâu ra môn này là môn bắt buộc hoc, trong khi mình chả có tí kiến thức gì về C cả, đống kia là mình mò 24/7 tuần trước mới viết được, toàn tiếng anh không :’(

mình chỉ là không biết code phần gửi tin nhăn từ server đến client(2) thui sao cho chính xác nò toan gửi ngược lai client(1)

:’(

bạn ơi bạn xem có ai rành về computer networking và C# thì nói giúp mình với :’(

alo bạn ơi, bạn có biết ai ranh về vấn đề này không hay bao giờ bạn rảnh vậy

@nguyenchiemminhvu, @david15894, @Rok_Hoang, @TTmagic, … giúp được cái này không?

@Khoa_Le khó trả lời quá :frowning:

Để giải quyết vấn đề giữ kết nối đến tất cả client thì có lẽ phải dùng tới thread để xử lý, do client có thể gửi nhiều message tới server và server cần lắng nghe tất cả các thông điệp do nhiều client gửi tới.

  1. Thường thì mình sẽ cài đặt lúc nhận được kết nối sẽ tạo ra 1 thread cho client vừa kết nối tới và thread này sẽ đọc dữ liệu gửi đến cho tới khi nào client đóng kết nối thì thôi. Và phải tạo ra 1 danh sách để lưu trữ các client đã kết nối đến, mỗi kết nối đến sẽ được thêm vào danh sách, và khi client đóng kết nối thì phải xóa đi thông tin của nó trong danh sách.

  2. Sau khi tạo thread xong thì server tiếp tục đợi kết nối khác từ client khác tới và thực hiện tiếp giống như bước (1).

  3. Trên thread client khi nhận được dữ liệu gửi tới thì sẽ gọi hàm gửi thông điệp vừa nhận được tới tất cả client đã lưu trữ ở cuối bước (1)

Sơ bộ là vậy

Tham khảo thêm:

3 Likes

bạn code thử dùm mình được không ngôn ngữ C này là do mình tự mò bằng mấy file bằng tiếng việt nên nên mới viết được đống trên, chứ bạn đưa tiếng anh thì mình thua :’(

thật ra là làm thế nào để tạo ra một thread vậy bạn, mình đã tham khảo thử mấy tài liệu bằng tiếng việt nhưng mình không hiểu lắm, bạn có thể cho mình một vài code dơn giản về thread được không cái code trên link kia mình thử chay rồi nhưng nó không hoạt động

Bạn phải bắt đầu tìm hiểu từ những cái cơ bản nhất: Hiểu rõ cách hàm của thư viện socket, rồi tiếp đó là thread rồi mới có thể làm tốt được. Chứ không phải cứ chạy được là xong. Mình nghĩ bạn nên quay lại tìm hiểu những kiến thức cơ bản trước đã!

2 Likes

Đồng ý với Huân về điểm này, socket programming không phải cứ copy/paste chạy được là học xong.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?