Trong lập trình mạng trong Unix, tôi luôn đặt tùy chọn SO_REUSEADDR trên socket đang được máy chủ sử dụng để nghe kết nối. Điều này về cơ bản nói rằng một ổ cắm khác có thể được mở trên cùng một cổng trên máy. Điều này rất hữu ích khi khôi phục từ sự cố và ổ cắm không được đóng đúng cách - ứng dụng có thể được khởi động lại và nó sẽ chỉ mở một ổ cắm khác trên cùng một cổng và tiếp tục nghe.Sử dụng SO_REUSEADDR - Điều gì sẽ xảy ra với ổ cắm mở trước đó?
Câu hỏi của tôi là, điều gì sẽ xảy ra với ổ cắm cũ? Không nghi ngờ gì, tất cả dữ liệu/kết nối vẫn sẽ được nhận trên ổ cắm cũ. Liệu nó có được đóng tự động bởi hệ điều hành không?
Để làm rõ: Sau khi chương trình bị treo, hệ điều hành ví dụ: Linux Kernel, sẽ tự động đóng socket. Có các lý do giao thức (TCP) tại sao bạn không muốn mở lại kết nối ngay lập tức. – unixman83
A phải đọc về chủ đề này: http://www.serverframework.com/asynchronousevents/2011/01/time-wait-and-its-design-implications-for-protocols-and-scalable-servers.html –