Có một lượng chi phí nhất định liên quan đến việc ghi vào ổ cắm mạng và gửi dữ liệu. Nếu dữ liệu được gửi mỗi khi byte vào ổ cắm, bạn sẽ kết thúc với 40+ byte của tiêu đề TCP cho mỗi byte dữ liệu thực tế. (Giả sử bạn đang sử dụng một ổ cắm TCP, tất nhiên. Các ổ cắm khác sẽ có các giá trị khác nhau). Để tránh sự thiếu hiệu quả như vậy, socket duy trì một bộ đệm cục bộ, thường là hơn 1000 byte. Khi bộ đệm đó được lấp đầy, một tiêu đề được bao quanh dữ liệu và gói tin được gửi đi đến đích của nó.
Trong nhiều trường hợp, bạn không cần gửi từng gói ngay lập tức; nếu bạn đang chuyển một tệp, dữ liệu ban đầu có thể không được sử dụng mà không có dữ liệu cuối cùng của tệp, do đó, điều này hoạt động tốt. Nếu bạn cần buộc dữ liệu được gửi đi ngay lập tức, tuy nhiên, việc xả bộ đệm sẽ gửi bất kỳ dữ liệu nào chưa được gửi đi.
Lưu ý rằng khi bạn đóng một ổ cắm, nó sẽ tự động xóa sạch bất kỳ dữ liệu remaning, vì vậy không cần phải tuôn ra trước khi bạn đóng.
Nguồn
2009-05-27 06:51:35
NAGL liên kết với nhau như thế nào, bạn có biết không? – rogerdpack
câu trả lời tuyệt vời .... – goh