Trong một số trường hợp, tôi muốn loại bỏ một cách rõ ràng các gói đang chờ trên socket với chi phí thấp nhất có thể. Có vẻ như không có cuộc gọi hệ thống "thả udp đệm" rõ ràng, nhưng có thể tôi đã sai?Hủy gói UDP đến mà không cần đọc
Cách tốt nhất tiếp theo có thể là recv
gói đến bộ đệm tạm thời và chỉ cần thả nó. Có vẻ như tôi không thể nhận được 0 byte, kể từ khi người đàn ông nói về recv
: The return value will be 0 when the peer has performed an orderly shutdown.
Vì vậy, 1 là tối thiểu trong trường hợp này.
Có cách nào khác để xử lý việc này không?
Chỉ trong trường hợp - đây không phải là tối ưu hóa sớm. Điều duy nhất máy chủ này đang làm là chuyển tiếp/gửi các gói UDP theo cách cụ thể - mặc dù recv
với len=1
sẽ không giết tôi, tôi chỉ muốn loại bỏ toàn bộ hàng đợi trong một lần với một số chức năng cụ thể hơn (hy vọng hạ thấp độ trễ).
Bạn đang sử dụng tiêu chí nào để quyết định loại bỏ gì? –
Không chắc chắn những gì tôi có thể nói ở đây vì vậy nó có ý nghĩa ... về cơ bản hai bên đang công bố (với một số cookie chia sẻ) rằng họ cần một proxy. Máy chủ phải mở ổ cắm sau yêu cầu đầu tiên để đảm bảo rằng cổng không được sử dụng bởi bất kỳ ai khác. Cho đến khi thiết lập hoàn tất, tôi cần phải thả các gói dữ liệu, nếu không chúng sẽ được xếp hàng và gửi lại sau đó - đó là một điều rất xấu trong kịch bản của tôi. Vì vậy, về cơ bản tôi đã có một lá cờ nội bộ cho mỗi kết nối mà nói - thả tất cả mọi thứ, hoặc chuyển tiếp tất cả mọi thứ. – viraptor