Mặc dù chúng tôi không bao gồm các hoạt động trong chương trình của chúng tôi (vì đơn giản), quá trình con, sau khi phục vụ tiến trình tương ứng, cần phải bị tiêu diệt. Quá trình con đó đã thực hiện nhiệm vụ của mình và là không hoạt động được bình thường được gọi là zombie trong hệ thống môi trường UNIX. Một đứa trẻ có thể bị tiêu diệt ngay khi nó không phải là cần thiết. Ngoài ra, hệ thống có thể chạy một chương trình đặc biệt một lần trong một thời gian để tiêu diệt tất cả các zombie trong hệ thống. Những thây ma chiếm không gian trong hệ thống và có thể ảnh hưởng đến hiệu suất của hệ thống.
Quy trình Khách hàng
các quá trình khách hàng là đơn giản. Các khách hàng gọi hàm socket để tạo một socket. Sau đó nó gọi chức năng kết nối để yêu cầu một kết nối đến máy chủ. Các chức năng kết nối là một chức năng ngăn chặn; nó bị chặn cho đến khi kết nối được thiết lập giữa hai TCPs. Khi các chức năng kết nối trở lại, khách hàng gọi chức năng gửi để gửi dữ liệu đến máy chủ. Chúng tôi sử dụng chỉ có một cuộc gọi đến các chức năng gửi, giả định rằng dữ liệu có thể được gửi đi với một cuộc gọi. Dựa vào loại ứng dụng, chúng ta có thể cần để gọi chức năng này liên tục (trong vòng một). Các khách hàng sau đó gọi hàm recv, mà bị chặn cho đến một phân đoạn đến và dữ liệu được gửi đến các quá trình của TCP. Lưu ý rằng, mặc dù các dữ liệu được gửi qua các máy chủ trong một cuộc gọi duy nhất để các chức năng gửi, TCP tại máy chủ trang web có thể đã sử dụng một vài phân đoạn để gửi dữ liệu. Điều này có nghĩa là chúng ta có thể cần phải gọi hàm recv nhiều lần để nhận được tất cả dữ liệu. Các vòng lặp có thể được kiểm soát bởi các giá trị trả về của hàm recv.
Ví dụ 17.3
Chúng tôi muốn viết hai chương trình để hiển thị như thế nào chúng ta có thể có một khách hàng echo và vang máy chủ bằng cách sử dụng dịch vụ của TCP. Hình 17.13 cho thấy các biến, chúng tôi sử dụng trong hai chương trình này. Kể từ khi dữ liệu có thể đến trong khối khác nhau, chúng ta cần con trỏ để trỏ đến bộ đệm. Các bộ đệm đầu tiên là cố định và luôn luôn chỉ vào đầu của bộ đệm; con trỏ thứ hai là di chuyển để cho các byte đến được gắn vào phần cuối của phần trước.
đang được dịch, vui lòng đợi..
