2013-03-08 35 views
9

Khi async_read_some() trả về ngoại lệ của EOF, điều đó có nghĩa là máy chủ ngừng gửi dữ liệu hoặc có nghĩa là kết nối bị đóng. Tôi đang có sự nhầm lẫn này vì tôi không thể tìm thấy một phương pháp để biết nếu khách hàng đã nhận được tất cả dữ liệu từ máy chủ.EOF trong async_read() trong tăng :: asio

Trả lời

10

Nó cho biết kết nối đã đóng. Mặc dù được ghi là elswhere vẫn còn áp dụng:

Mã lỗi của boost::asio::error::eof cho biết kết nối đã bị đóng.

Nếu khách hàng cần biết rằng tất cả dữ liệu đã được nhận từ máy chủ, hãy xem xét hỗ trợ khung trong giao thức truyền thông. Boost.Asio cung cấp các hoạt động cấp cao hơn để giúp thực hiện điều này dễ dàng hơn. Ví dụ: async_read_until() có thể được sử dụng trên các giao thức có sử dụng một bộ ký tự nhất định để chỉ kết thúc thư và có thể sử dụng async_read() cho giao thức có độ dài cố định hoặc giao thức độ dài thay đổi với tiêu đề độ dài cố định.

Các vấn đề liên quan