tôi đang học cách sử dụng SO_SNDTIMEO và SO_RCVTIMEO để kiểm tra thời gian chờ. Rất dễ sử dụng với đọc ổ cắm. Nhưng khi tôi muốn kiểm tra ghi thời gian chờ, nó luôn trở lại thành công. Dưới đây là những gì tôi đã làm: (tất cả trong chế độ chặn)làm thế nào để mô phỏng trường hợp bất thường cho lập trình socket/tcp trong linux, chẳng hạn như chấm dứt một bên của kết nối?
- gần client đọc ổ cắm và thoát trước khi máy chủ bắt đầu ghi
- chấm dứt khách hàng trước khi máy chủ bắt đầu ghi
- tháo cáp máy chủ sau chấp nhận nhưng trước viết
tốt, có vẻ như tất cả các trường hợp này viết vừa trở lại thành công. Tôi nghĩ lý do nên là cổng là tài nguyên được quản lý bởi os, và ở phía máy khách, sau khi chương trình biến mất, kết nối tcp vẫn hiển thị trạng thái FIN_WAIT2.
vậy, liệu có cách nào thuận tiện để mô phỏng một số trường hợp mà ghi có thể nhận được lỗi như EPIPE, EAGAIN?
cảm ơn thông tin của bạn và tôi sẽ thử. Đối với ** đọc **, tôi thực sự có EAGAIN và EWOULDBLOCK trong chế độ Chặn khi hết thời gian chờ. Tôi chỉ giả sử nó hoạt động giống nhau khi ** viết ** thời gian chờ. – xgwang