Tôi biết rằng read() là một cuộc gọi chặn trừ khi tôi làm cho ổ cắm không bị chặn. Vì vậy, tôi mong đợi read() gọi mà yêu cầu 4K dữ liệu nên trả lại một giá trị tích cực (không có byte đọc) hoặc -1 trên lỗi (có thể kết nối thiết lập lại của khách hàng vv). Câu hỏi của tôi là: Có thể đọc() trả về '0' vào bất kỳ dịp nào không?Có thể đọc() chức năng trên một ổ cắm kết nối trả lại byte không?
Tôi đang xử lý read() theo cách này:
if ((readval = read(acceptfd, buf, sizeof(buf) - 1)) < 0)
{
}
else
{
buf[readval] = 0;
//Do some thing with data
}
Mã này quả bom nếu đọc() trả về zero và tôi biết làm thế nào để sửa chữa nó. Nhưng có thể đọc() để trả về không?
Bạn đã xem xét việc đọc trang * man * chưa? – EJP