Câu hỏi

25/05/2013 20:29
Lập trình C trên Linux, dùng cơ chế giao tiếp Socket để trao đổi dữ liệu giữa client và server.?
Lập trình C trên Linux, dùng cơ chế giao tiếp Socket để trao đổi dữ liệu giữa client và server. Ở phía client, để nhận được dữ liệu gửi qua socket, dùng hàm đọc dữ liệu từ socket. Vấn đề là hàm này có yêu cầu đối số cho biết số byte cần đọc. Làm thế nào client xác định số byte cần gửi đến?
conkavip
25/05/2013 20:29
Danh sách câu trả lời (1)

Ứng dụng mạng thường dùng mô hình client-server, nghĩa là có 2 loại phần tử chức năng chạy trên các máy khác nhau, phần tử client và phần tử server. Vấn đề thiết yếu nhất trong lập trình mạng là định nghĩa được giao thức làm việc giữa client và server, đó là tập các thông báo request được gửi từ client đến server và tập các reply gửi từ server về client cùng cú pháp cụ thể của chúng. Nhờ giao thức này, client chủ động gửi request theo yêu cầu đến server, và từng request đã gửi, client biết sẽ nhận reply gồm những gì. Đa số các giao thức của các ứng dụng mạng phổ biến chọn cú pháp của request và reply là chuỗi ký tự ASCII kết thúc bởi ký tự xuống hàng (LF - LineFeed), do đó khi client chờ reply, nó sẽ cố gắng nhận từng ký tự cho đến khi gặp ký tự LF thì xem như đã nhận đủ reply. Nếu có thông tin nhị phân được gửi kèm theo reply thì trong thông báo reply sẽ có field miêu tả độ dài chuỗi byte kèm theo để client biết phải chờ nhận chính xác bao nhiêu byte nữa. Tóm lại, nhờ client và server luôn tuân thủ theo giao thức đã qui định nên chúng sẽ biết chính xác lúc nào phải gửi hay phải nhận gì, số lượng byte cần gửi/nhận cụ thể là bao nhiêu.
Trả lời câu hỏi
Câu hỏi lĩnh vực Lập trình
Rao vặt Siêu Vip