Một socket mỗi trao đổi trò chuyện
Chuyển sang server code trong phần code trên, bạn thấy một mô hình rất khác cái bạn chứng kiến trước kia, và sự khác
nhau này trên ý nghĩa của một socket dòng TCP. Nhớ trong thảo luận trước của chúng ta rằng có 2 loại sockets dòng khác
nhau: các sockets lắng nghe, với nó máy chủ tạo một cổng có sẵn cho các kết nối đi vào, và các sockets được kết nối
, cái trình bày một trao đổi trò chuyện cái một máy chủ đang có với một máy khách cụ thể.
Trong phần code trên, bạn có thể thấy sự khác biệt được có như thế nào qua code máy chủ thực sự. Mối liên kết có thể
làm bạn thấy lạ trước tiên, là rằng một listening socket thực sự trả về một connected socket mới như giá trị cái
bạn nhận bằng cách gọi accept()! Hãy đi theo các bước trong phần code chương trình để thấy trật tự trong đó các hoạt
động xảy ra.
Trước tiên, máy chủ chạy bind() để nhận một cổng cụ thể. Chú ý rằng cái này chưa quyết định liệu chương trình sẽ
là một máy khách hay chủ, đó là, liệu nó sẽ chủ động tạo một kết nối hay thụ động chờ nhận các kết nối đi đến. Nó
đơn giản tuyên bố nhận một cổng cụ thể, hoặc là một giao diện cụ thể hoặc là tất cả các giao diện, cho sử dụng chương
trình này. Thậm chí các máy khách có thể sử dụng lời gọi này nếu vì lí do nào đó, chúng muốn đi ra tới một máy chủ
từ một cổng cụ thể trên máy của chúng hơn là đơn giản sử dụng bất cứ số cổng không bền nào chúng sẽ mặt khác được gán.
Khoảnh khắc thực của quyết định đi với lời gọi phương thức tiếp theo, khi máy chủ tuyên bố rằng nó muốn sử dụng socket
để listen(). Chạy cái này trên TCP socket hoàn toàn chuyển dạng kí tự của nó. Sau khi listen() đã được gọi, socket
không thay đổi nữa và có thể không bao giờ, từ điểm này trở đi, được sử dụng để gửi và nhận dữ liệu. Socket object
cụ thể này bây giờ sẽ không bao giờ với bất cứ máy khách cụ thể nào. Thay vào đó, socket bây giờ có thể sử dụng chỉ để
nhận các kết nối đi đến qua phương thức accept() của nó – một phương thức cái bạn chưa thấy trong các học phần trước
vì mục đích của nó là chỉ hố trợ các listening TCP sockets – và mỗi trong số lời gọi này chờ cho một máy khách kết
nối và sau đó trả về một socket hoàn toàn mới cái quản trị trao đổi trò chuyện mới cái đã bắt đầu với chúng.