Tôi đang thử nghiệm truyền thông máy khách-máy chủ thông qua một ổ cắm TCP. Tôi đã viết các máy chủ trong C và tôi đang chạy nó trên một máy Linux và tôi đang sử dụng nc
như là một khách hàng để thử nghiệm.Chỉ có đường ống bị hỏng ở lần gửi thứ hai trên ổ cắm kín
Máy chủ, sau khi trao đổi tin nhắn ban đầu với khách hàng, gửi một số tin nhắn định kỳ cho khách hàng mà không nhận được bất kỳ phản hồi nào.
Nếu tôi giết khách hàng, tôi hy vọng rằng các send()
đầu tiên thực hiện bởi các máy chủ không thành công với EPIPE
lỗi nhưng điều này hóa ra chỉ ở thứ hai send()
sau khi khách hàng đã biến mất! Đầu tiên send()
sau khi tôi đã giết khách hàng có thể gửi thành công 1100 byte đến ổ cắm (tôi cho là đã đóng). Hoạt động send()
sau kết thúc bằng EPIPE
khi được exepcted.
Có ai có thể giải thích cho tôi về hành vi này không? Có phải do thực tế là tôi ghi vào ngăn xếp TCP/IP sao cho nó xếp chồng lên nhau để phân phối khi có thể? Nếu có, làm cách nào để kiểm tra trạng thái kết nối? Để chắc chắn người ngang hàng vẫn ở đó.
Cảm ơn câu trả lời của bạn, chi tiết và rõ ràng. Thật không may tôi không thể kiểm tra các tùy chọn nc bạn đề nghị tôi vì lệnh trên máy Linux của tôi dường như không hỗ trợ nó.Nhân tiện các tài liệu mà bạn đã chỉ cho tôi và các giải thích bạn đã cho tôi rõ ràng và hữu ích. Cảm ơn! – Igor