Sockets
Hơn là cố gắng sáng tạo ra API của bản thân nó cho lập trình mạng, Python thực hiện một
quyết định thú vị. Tại đáy, Python’s Standard Library đơn giản cung cấp một giao diện dựa
trên object cho tất cả các lời gọi hệ điều hành mức thấp, khó, thông thường cái thông
thường được sử dụng để hoàn thành các nhiệm vụ mạng trên POSIX – hệ điều hành tuân thủ chung. Các
lời gọi thậm chí có cùng các tên như các hoạt động bên dưới chúng gói. Sự sẵn sàng của Python để
bộc lộ các lời gọi hệ thống truyền thống cái mọi người đã hiểu trước khi nó đi vào cuộc chơi
, là một trong những lí do cái Python đến như hơi thở trong lành đối với những người trong
chúng ta vất vả trong các ngôn ngữ mức thấp hơn trong đầu năm 90s. Cuối cùng, một ngôn ngữ mức
cao hơn đã đi đến cái cho phép chúng ta thực hiện các lời gọi hệ thống mức thấp khi chúng ta
cần chúng, mà không phải bám vào rằng chúng ta sử dụng một API tuỳ theo ngôn ngữ khó, không
có khả năng nhưng đẹp hơn. Nó đã là dễ dàng hơn để nhớ một tập đơn các lời gọi cái làm việc trong
cả C và Python.
Các lời gọi hệ thống bên dưới cho liên mạng trên cả hệ thống Windows và POSIX (như Linux và Mac OS
X), trung tâm hoá quanh ý tưởng điểm cuối của trao đổi thông tin được gọi là một socket. Hệ điều hành
sử dụng các số nguyên để nhận dạng các sockets nhưng Python thay vào đó trả về một object socket.socket
thuận tiện hơn đối với Python code của bạn. Nó nhớ số nguyên bên trong (bạn có thể gọi phương thức
fileno() để nhìn vào nó) và sử dụng nó tự động mọi lúc bạn gọi một trong những phương thức của nó để yêu
cầu rằng một system call có thể được chạy trên socket.
Chú ý: Trên hệ thống POSIX, số nguyên fileno() cái nhận dạng một socket cũng là một bộ mô tả được
rút ra từ nhóm số nguyên trình bày cho các files đang mở. Bạn có thể chạy qua code cái giả sử môi
trường POSIX sẽ lấy số nguyên này và sau đó sử dụng nó để thực hiện các lời gọi không phải liên mạng
như os.read() và os.write() trên bộ mô tả file để thực hiện những thứ giống như file với những gì thực
sự là một điểm cuối trao đổi thông tin mạng. Tuy nhiên, vì code trong các học phần này cũng được thiết kế
để hoạt động trên Windows, bạn sẽ chỉ thực hiện các thao tác socket thực sự trên socket của bạn.