Tôi chỉ đang dọn dẹp một số mã mà chúng tôi đã viết một lúc và nhận thấy rằng đối với một ổ cắm udp, 0 đang được coi là kết nối đã đóng.Trong Linux, có thể recv bao giờ trở về 0 trên UDP?
Tôi khá chắc chắn đây là kết quả của việc chuyển cùng một vòng lặp recv từ phiên bản tcp tương đương. Nhưng nó làm tôi ngạc nhiên. Có thể recv trả về 0 cho udp không? trên tcp nó báo hiệu đầu kia đã đóng kết nối. udp không có khái niệm về kết nối sao cho nó có thể trả về 0? và nếu nó có thể, ý nghĩa của nó là gì?
Lưu ý: trang người dùng trong linux không phân biệt udp và tcp cho mã trả về bằng 0 có thể là lý do chúng tôi giữ séc trong mã.
Ổ cắm UDP có được kết nối hay không? –
Bạn có thể gọi "kết nối" trên ổ cắm UDP, nhưng tất cả những gì có là gán một địa chỉ IP/cổng từ xa vào ổ cắm UDP. Điều đó cho phép bạn gọi chỉ là "gửi" và "recv" mà không cần sendto, recvfrom. Tôi tin rằng nó cũng hoạt động như một bộ lọc và chỉ cho phép bạn nhận các gói dữ liệu udp chỉ từ địa chỉ đó. Vì vậy, theo nghĩa nào đó chúng được kết nối, nhưng không giống với TCP. – Matt