Python xử lý lỗi hết thời gian kết nối như thế nào?
def request(self, url, method, data=None, headers=None). url = verify(url) try. if method == 'get'. r = self. session. get(url, timeout=self. timeout, headers=headers, verify=False, allow_redirects=True) return r else. r = self. session. post(url, data=data, timeout=self. timeout, headers=headers, verify=False, allow_redirects=False) return r except (requests. exceptions. ConnectTimeout, requests. exceptions. ReadTimeout, requests. exceptions. Timeout, requests. exceptions. SSLError, requests. exceptions. ConnectionError, ssl. SSLError, AttributeError, ConnectionRefusedError, socket. timeout, urllib3. exceptions. ReadTimeoutError, OpenSSL. SSL. WantReadError, urllib3. exceptions. DecodeError, requests. exceptions. ContentDecodingError). pass except Exception as e. logging. exception(e)
> Isn't it a job of crossplatform programming language to abstract from > low-level platform details? It's certainly not Python's job. It's an explicit design goal, and a long tradition, to expose system interfaces *as is*, with the very same parameters, and the very same error codes. This is useful for developers who need to understand what problem they encounter - they can trust that Python doesn't second-guess the operating system. It might be useful to put a layer on top of the system interfaces, but such a layer needs to use different names. > The scope of this bug is not about handling all possible Winsock errors. > It is about proper handling the sole timeout error from the list > http://www.winsock-error.com/ to make socket.connect() interface > consistent for both windows and linux. That's nearly impossible, with respect to specific error conditions. The TCP stacks are too different. You can easily define an common (but useless) error handling scheme yourself: catch Exception, and interpret it as "it didn't work". > BTW, I have tested the behaviour on linux - the system timeout on socket > does occur, but with different error code. > > socket.error: (110, 'Connection timed out') > > Note that the error message is different too. That means that to > properly wait for service to appear (or retry to reconnect later if > server is not available) you need to handle three error cases. That's correct. However, you shouldn't look at the error message when handling the error on Linux. Instead, you should check whether the error code is errno.ETIMEDOUT. The error message is only meant for a human reader. Also notice that possible other errors returned from connect are EACCES, EPERM, EADDRINUSE, EAFNOSUPPORT, EAGAIN, EALREADY, EBADF, ECONNREFUSED, EFAULT, EINPROGRESS, EINTR, EISCONN, ENETUNREACH, ENOTSOCK. This module provides access to the BSD socket interface. It is available on all modern Unix systems, Windows, MacOS, and probably additional platforms Show
Note Some behavior may be platform dependent, since calls are made to the operating system socket APIs Availability . not Emscripten, not WASI. This module does not work or is not available on WebAssembly platforms import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)6 and import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)7. See WebAssembly platforms for more information. The Python interface is a straightforward transliteration of the Unix system call and library interface for sockets to Python’s object-oriented style. the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8 function returns a socket object whose methods implement the various socket system calls. Parameter types are somewhat higher-level than in the C interface. as with import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)9 and >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]0 operations on Python files, buffer allocation on receive operations is automatic, and buffer length is implicit on send operations See also Module>>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]1 Classes that simplify writing network servers Module>>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]2 A TLS/SSL wrapper for socket objects Socket families¶Depending on the system and the build options, various socket families are supported by this module The address format required by a particular socket object is automatically selected based on the address family specified when the socket object was created. Socket addresses are represented as follows
If you use a hostname in the host portion of IPv4/v6 socket address, the program may show a nondeterministic behavior, as Python uses the first address returned from the DNS resolution. The socket address will be resolved differently into an actual IPv4/v6 address, depending on the results from DNS resolution and/or the host configuration. For deterministic behavior use a numeric address in host portion All errors raise exceptions. The normal exceptions for invalid argument types and out-of-memory conditions can be raised. Errors related to socket or address semantics raise import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 or one of its subclasses Non-blocking mode is supported through import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)12. A generalization of this based on timeouts is supported through import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)13 Module contents¶The module import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 exports the following elements Exceptions¶exception socket. error ¶A deprecated alias of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 Changed in version 3. 3. Following PEP 3151, this class was made an alias of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11. exception socket. herror ¶ A subclass of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11, this exception is raised for address-related errors, i. e. for functions that use h_errno in the POSIX C API, including import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)18 and import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)19. The accompanying value is a pair import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)20 representing an error returned by a library call. h_errno is a numeric value, while string represents the description of h_errno, as returned by the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)21 C function Changed in version 3. 3. This class was made a subclass of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11. exception socket. gaierror ¶ A subclass of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11, this exception is raised for address-related errors by import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)24 and import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)25. The accompanying value is a pair import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)26 representing an error returned by a library call. string represents the description of error, as returned by the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)27 C function. The numeric error value will match one of the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)28 constants defined in this module Changed in version 3. 3. This class was made a subclass of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11. ngoại lệ ổ cắm. hết giờ ¶ Bí danh không dùng nữa của import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)30 Một lớp con của import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11, ngoại lệ này được đưa ra khi thời gian chờ xảy ra trên một ổ cắm đã kích hoạt thời gian chờ thông qua lệnh gọi trước tới import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)13 (hoặc ngầm định thông qua import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)33). Giá trị đi kèm là một chuỗi có giá trị hiện tại luôn ở trạng thái “timed out” Changed in version 3. 3. This class was made a subclass of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11. Đã thay đổi trong phiên bản 3. 10. Lớp này có bí danh là import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)30. Hằng số¶ổ cắm. AF_UNIX ¶ ổ cắm. AF_INET ¶ ổ cắm. AF_INET6 ¶ Các hằng số này đại diện cho các họ địa chỉ (và giao thức), được sử dụng cho đối số đầu tiên của import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8. Nếu hằng số >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]3 không được xác định thì giao thức này không được hỗ trợ. Có thể có nhiều hằng số hơn tùy thuộc vào hệ thốngổ cắm. SOCK_STREAM ¶ ổ cắm. SOCK_DGRAM ¶ ổ cắm. SOCK_RAW ¶ ổ cắm. SOCK_RDM ¶ ổ cắm. SOCK_SEQPACKET ¶ Các hằng số này đại diện cho các loại ổ cắm, được sử dụng cho đối số thứ hai của import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8. Có thể có nhiều hằng số hơn tùy thuộc vào hệ thống. (Chỉ có import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)42 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)43 nhìn chung là hữu ích. )ổ cắm. SOCK_CLOEXEC ¶ ổ cắm. SOCK_NONBLOCK ¶ Hai hằng số này, nếu được xác định, có thể được kết hợp với các loại ổ cắm và cho phép bạn đặt một số cờ một cách nguyên tử (do đó tránh được các điều kiện chạy đua có thể xảy ra và nhu cầu gọi riêng) See also Xử lý mô tả tệp an toàn để được giải thích kỹ lưỡng hơn Tính khả dụng . Linux >= 2. 6. 27. Mới trong phiên bản 3. 2 SO_*ổ cắm. SOMAXCONN ¶ MSG_*SOL_*SCM_*IPPROTO_*IPPORT_*INADDR_*IP_*IPV6_*EAI_*AI_*NI_*TCP_*Nhiều hằng số của các dạng này, được ghi lại trong tài liệu Unix về ổ cắm và/hoặc giao thức IP, cũng được xác định trong mô-đun ổ cắm. Chúng thường được sử dụng trong các đối số cho các phương thức import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)44 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)45 của các đối tượng ổ cắm. Trong hầu hết các trường hợp, chỉ những ký hiệu được xác định trong tệp tiêu đề Unix mới được xác định; Đã thay đổi trong phiên bản 3. 6. ______146, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)47, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)48, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)49, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)50, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)51 đã được thêm vào. Đã thay đổi trong phiên bản 3. 6. 5. Trên Windows, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)52, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)53 xuất hiện nếu Windows hỗ trợ thời gian chạy. Đã thay đổi trong phiên bản 3. 7. ______154 đã được thêm vào. Trên Windows, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)55, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)56 xuất hiện nếu thời gian chạy Windows hỗ trợ Đã thay đổi trong phiên bản 3. 10. ______157 đã được thêm vào. Đã thêm import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)58. Trên MacOS, hằng số này có thể được sử dụng giống như cách mà import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)55 được sử dụng trên Linux. Đã thay đổi trong phiên bản 3. 11. Đã thêm import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)60. Trên MacOS, hằng số này có thể được sử dụng giống như cách mà import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)61 được sử dụng trên Linux và BSD. ổ cắm. AF_CAN ¶ ổ cắm. PF_CAN ¶ SOL_CAN_*CAN_* Nhiều hằng số của các dạng này, được ghi lại trong tài liệu Linux, cũng được định nghĩa trong mô-đun ổ cắm Tính khả dụng . Linux >= 2. 6. 25, NetBSD >= 8. Mới trong phiên bản 3. 3 Đã thay đổi trong phiên bản 3. 11. Đã thêm hỗ trợ NetBSD. ổ cắm. CAN_BCM ¶ CAN_BCM_*CAN_BCM, trong họ giao thức CAN, là giao thức quản lý quảng bá (BCM). Các hằng số của trình quản lý phát sóng, được ghi lại trong tài liệu Linux, cũng được xác định trong mô-đun ổ cắm Tính khả dụng . Linux >= 2. 6. 25. Note Cờ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)62 chỉ khả dụng trên Linux >= 4. 8 Mới trong phiên bản 3. 4 ổ cắm. CAN_RAW_FD_FRAMES ¶Cho phép hỗ trợ CAN FD trong ổ cắm CAN_RAW. Điều này bị tắt theo mặc định. Điều này cho phép ứng dụng của bạn gửi cả khung CAN và CAN FD; Hằng số này được ghi lại trong tài liệu Linux Tính khả dụng . Linux >= 3. 6. Mới trong phiên bản 3. 5 ổ cắm. CAN_RAW_JOIN_FILTERS ¶Tham gia các bộ lọc CAN được áp dụng sao cho chỉ các khung CAN khớp với tất cả các bộ lọc CAN đã cho mới được chuyển đến không gian người dùng Hằng số này được ghi lại trong tài liệu Linux Tính khả dụng . Linux >= 4. 1. New in version 3. 9 ổ cắm. CAN_ISOTP ¶CAN_ISOTP, trong họ giao thức CAN, là giao thức ISO-TP (ISO 15765-2). Các hằng số ISO-TP, được ghi lại trong tài liệu Linux Tính khả dụng . Linux >= 2. 6. 25. New in version 3. 7 ổ cắm. CAN_J1939 ¶CAN_J1939, trong họ giao thức CAN, là giao thức SAE J1939. Các hằng số J1939, được ghi lại trong tài liệu Linux Tính khả dụng . Linux >= 5. 4. New in version 3. 9 ổ cắm. AF_PACKET ¶ ổ cắm. PF_PACKET ¶ PACKET_*Nhiều hằng số của các dạng này, được ghi lại trong tài liệu Linux, cũng được định nghĩa trong mô-đun ổ cắm Availability . Linux >= 2. 2. ổ cắm. AF_RDS ¶ ổ cắm. PF_RDS ¶ ổ cắm. SOL_RDS ¶ RDS_*Nhiều hằng số của các dạng này, được ghi lại trong tài liệu Linux, cũng được định nghĩa trong mô-đun ổ cắm Tính khả dụng . Linux >= 2. 6. 30. Mới trong phiên bản 3. 3 ổ cắm. SIO_RCVALL ¶ ổ cắm. SIO_KEEPALIVE_VALS ¶ ổ cắm. SIO_LOOPBACK_FAST_PATH ¶ RCVALL_*Các hằng số cho WSAIoctl() của Windows. Các hằng số được sử dụng làm đối số cho phương thức import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)63 của các đối tượng ổ cắm Đã thay đổi trong phiên bản 3. 6. ______164 đã được thêm vào. MẸO_*Các hằng số liên quan đến TIPC, khớp với các hằng số được xuất bởi API ổ cắm C. Xem tài liệu TIPC để biết thêm thông tin ổ cắm. AF_ALG ¶ ổ cắm. SOL_ALG ¶ ALG_*Các hằng số cho mã hóa hạt nhân Linux Availability . Linux >= 2. 6. 38. New in version 3. 6 ổ cắm. AF_VSOCK ¶ ổ cắm. IOCTL_VM_SOCKETS_GET_LOCAL_CID ¶ VMADDR*SO_VM*Các hằng số cho giao tiếp máy chủ/khách Linux Tính khả dụng . Linux >= 4. 8. New in version 3. 7 ổ cắm. AF_LINK ¶Tính khả dụng . BSD, macOS. Mới trong phiên bản 3. 4 ổ cắm. has_ipv6 ¶Hằng số này chứa một giá trị boolean cho biết liệu IPv6 có được hỗ trợ trên nền tảng này hay không ổ cắm. BDADDR_ANY ¶ ổ cắm. BDADDR_LOCAL ¶Đây là các hằng chuỗi chứa địa chỉ Bluetooth có ý nghĩa đặc biệt. Ví dụ: có thể sử dụng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)65 để chỉ ra bất kỳ địa chỉ nào khi chỉ định ổ cắm liên kết với >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]51ổ cắm. HCI_FILTER ¶ ổ cắm. HCI_TIME_STAMP ¶ ổ cắm. HCI_DATA_DIR ¶ Để sử dụng với >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]55. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)68 không khả dụng cho NetBSD hoặc DragonFlyBSD. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)69 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)70 không có sẵn cho FreeBSD, NetBSD hoặc DragonFlyBSDổ cắm. AF_QIPCRTR ¶ Hằng số cho giao thức bộ định tuyến IPC của Qualcomm, được sử dụng để giao tiếp với dịch vụ cung cấp bộ xử lý từ xa Availability . Linux >= 4. 7. ổ cắm. SCM_CREDS2 ¶ ổ cắm. LOCAL_CREDS ¶ ổ cắm. LOCAL_CREDS_PERSISTENT ¶LOCAL_CREDS và LOCAL_CREDS_PERSISTENT có thể được sử dụng với ổ cắm SOCK_DGRAM, SOCK_STREAM, tương đương với Linux/DragonFlyBSD SO_PASSCRED, trong khi LOCAL_CREDS gửi thông tin đăng nhập ở lần đọc đầu tiên, LOCAL_CREDS_PERSISTENT gửi cho mỗi lần đọc, SCM_CREDS2 sau đó phải được sử dụng cho lần đọc sau đối với loại thông báo Mới trong phiên bản 3. 11 Tính khả dụng . BSD miễn phí. ổ cắm. SO_INCOMING_CPU ¶
Mới trong phiên bản 3. 11 Availability . Linux >= 3. 9 Chức năng¶Tạo ổ cắm¶Tất cả các chức năng sau đây đều tạo ra đối tượng ổ cắm . lớp . ổ cắm(gia đình=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)¶Tạo một ổ cắm mới bằng cách sử dụng họ địa chỉ, loại ổ cắm và số giao thức đã cho. Họ địa chỉ phải là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]7 (mặc định), import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)54, >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]3, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)56, >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]55 hoặc import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)77. Loại ổ cắm phải là import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)42 (mặc định), import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)43, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)80 hoặc có lẽ là một trong các hằng số import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)81 khác. Số giao thức thường bằng 0 và có thể bị bỏ qua hoặc trong trường hợp họ địa chỉ là import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)56 thì giao thức phải là một trong số import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)83, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)84, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)59 hoặc import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)51 Nếu fileno được chỉ định, các giá trị cho họ, loại và nguyên mẫu được tự động phát hiện từ bộ mô tả tệp đã chỉ định. Tự động phát hiện có thể bị ghi đè bằng cách gọi hàm với các đối số họ, loại hoặc proto rõ ràng. Điều này chỉ ảnh hưởng đến cách Python đại diện cho e. g. giá trị trả về của import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)87 nhưng không phải là tài nguyên hệ điều hành thực tế. Không giống như import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)88, fileno sẽ trả về cùng một ổ cắm và không trùng lặp. Điều này có thể giúp đóng một ổ cắm tách rời bằng cách sử dụng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)89 Ổ cắm mới được tạo là không thể kế thừa . Tăng sự kiện kiểm tra import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)90 với các đối số import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)91, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)92, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)93, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)94. Đã thay đổi trong phiên bản 3. 3. Dòng AF_CAN đã được thêm vào. Họ AF_RDS đã được thêm vào. Đã thay đổi trong phiên bản 3. 4. Giao thức CAN_BCM đã được thêm vào. Đã thay đổi trong phiên bản 3. 4. Ổ cắm được trả về hiện không thể kế thừa. Đã thay đổi trong phiên bản 3. 7. Giao thức CAN_ISOTP đã được thêm vào. Changed in version 3. 7. When import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)95 or import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)96 bit flags are applied to type they are cleared, and import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)97 will not reflect them. Chúng vẫn được chuyển đến cuộc gọi import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8 của hệ thống cơ bản. Vì vậy, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)84 vẫn sẽ tạo non-blocking socket trên các hệ điều hành hỗ trợ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)95, nhưng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]00 sẽ được đặt thành >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]01 Đã thay đổi trong phiên bản 3. 9. The CAN_J1939 protocol was added. Changed in version 3. 10. Giao thức IPPROTO_MPTCP đã được thêm vào. ổ cắm. cặp ổ cắm([gia đình[, type[, proto]]])¶Build a pair of connected socket objects using the given address family, socket type, and protocol number. Họ địa chỉ, loại ổ cắm và số giao thức giống như chức năng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8 ở trên. Họ mặc định là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]3 nếu được xác định trên nền tảng; Ổ cắm mới được tạo không thể kế thừa . Changed in version 3. 2. The returned socket objects now support the whole socket API, rather than a subset. Changed in version 3. 4. Các ổ cắm được trả lại hiện không thể kế thừa. Đã thay đổi trong phiên bản 3. 5. Đã thêm hỗ trợ Windows. ổ cắm. create_connection(địa chỉ , thời gian chờ=GLOBAL_DEFAULT, source_address=None, *, all_errors=False)¶Connect to a TCP service listening on the internet address (a 2-tuple >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]6), and return the socket object. Đây là một chức năng cấp cao hơn so với >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]06. nếu máy chủ lưu trữ là một tên máy chủ không phải dạng số, nó sẽ cố gắng phân giải nó cho cả >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]7 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)54, sau đó lần lượt cố gắng kết nối với tất cả các địa chỉ có thể cho đến khi kết nối thành công. Điều này giúp dễ dàng viết các ứng dụng khách tương thích với cả IPv4 và IPv6 Truyền tham số thời gian chờ tùy chọn sẽ đặt thời gian chờ trên phiên bản ổ cắm trước khi thử kết nối. Nếu không có thời gian chờ nào được cung cấp, thì cài đặt thời gian chờ mặc định chung do >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]09 trả về sẽ được sử dụng Nếu được cung cấp, source_address phải là 2-tuple >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]6 để ổ cắm liên kết thành địa chỉ nguồn của nó trước khi kết nối. Nếu máy chủ hoặc cổng tương ứng là ‘’ hoặc 0 thì hành vi mặc định của hệ điều hành sẽ được sử dụng Khi không thể tạo kết nối, một ngoại lệ được đưa ra. By default, it is the exception from the last address in the list. Nếu all_errors là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]11, thì đó là một >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]12 chứa lỗi của tất cả các lần thử Changed in version 3. 2. source_address đã được thêm. Đã thay đổi trong phiên bản 3. 11. all_errors was added. socket. create_server(địa chỉ , *, family=AF_INET, backlog=None, reuse_port=False, dualstack_ipv6=False)¶Hàm tiện lợi tạo ổ cắm TCP được liên kết với địa chỉ (2-tuple >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]6) và trả về đối tượng ổ cắm gia đình nên là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]7 hoặc import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)54. tồn đọng là kích thước hàng đợi được chuyển đến >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]16; . tái sử dụng_port ra lệnh có đặt tùy chọn ổ cắm import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)71 hay không Nếu dualstack_ipv6 là đúng và nền tảng hỗ trợ nó thì ổ cắm sẽ có thể chấp nhận cả kết nối IPv4 và IPv6, nếu không thì nó sẽ tăng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]19. Most POSIX platforms and Windows are supposed to support this functionality. Khi chức năng này được bật, địa chỉ được trả về bởi import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)87 khi xảy ra kết nối IPv4 sẽ là địa chỉ IPv6 được biểu thị dưới dạng địa chỉ IPv6 được ánh xạ IPv4. Nếu dualstack_ipv6 là false, nó sẽ vô hiệu hóa chức năng này một cách rõ ràng trên các nền tảng kích hoạt nó theo mặc định (e. g. Linux). This parameter can be used in conjunction with >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]21 import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr) Note Trên nền tảng POSIX, tùy chọn ổ cắm >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]22 được đặt để sử dụng lại ngay các ổ cắm trước đó được liên kết trên cùng một địa chỉ và duy trì ở trạng thái TIME_WAIT Mới trong phiên bản 3. 8 ổ cắm. has_dualstack_ipv6() ¶Return >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]11 if the platform supports creating a TCP socket which can handle both IPv4 and IPv6 connections Mới trong phiên bản 3. 8 socket. từfd(fd , gia đình, type, proto=0)¶Sao chép bộ mô tả tệp fd (một số nguyên được trả về bởi phương thức >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]24 của đối tượng tệp) và tạo một đối tượng ổ cắm từ kết quả. Họ địa chỉ, loại ổ cắm và số giao thức giống như hàm import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8 ở trên. Bộ mô tả tệp phải tham chiếu đến một ổ cắm, nhưng điều này không được chọn — các thao tác tiếp theo trên đối tượng có thể không thành công nếu bộ mô tả tệp không hợp lệ. Chức năng này hiếm khi cần thiết, nhưng có thể được sử dụng để lấy hoặc đặt các tùy chọn ổ cắm trên một ổ cắm được chuyển đến chương trình dưới dạng đầu vào hoặc đầu ra tiêu chuẩn (chẳng hạn như máy chủ được khởi động bởi Unix inet daemon). The socket is assumed to be in blocking mode Ổ cắm mới được tạo là không thể kế thừa . Đã thay đổi trong phiên bản 3. 4. Ổ cắm được trả về hiện không thể kế thừa. socket. từ chia sẻ(dữ liệu) ¶Khởi tạo một ổ cắm từ dữ liệu thu được từ phương thức >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]26. The socket is assumed to be in blocking mode Tính khả dụng . các cửa sổ. Mới trong phiên bản 3. 3 ổ cắm. Loại ổ cắm ¶Đây là một đối tượng kiểu Python đại diện cho kiểu đối tượng ổ cắm. Nó giống như >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]27 Other functions¶The import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 module also offers various network-related servicesổ cắm. đóng(fd) ¶ Đóng bộ mô tả tệp ổ cắm. Điều này giống như >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]29, nhưng đối với ổ cắm. Trên một số nền tảng (đáng chú ý nhất là Windows) >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]29 không hoạt động đối với bộ mô tả tệp ổ cắm New in version 3. 7 ổ cắm. getaddrinfo(máy chủ , cổng, family=0, type=0, proto=0, flags=0)¶Dịch đối số máy chủ/cổng thành một chuỗi gồm 5 bộ chứa tất cả các đối số cần thiết để tạo ổ cắm được kết nối với dịch vụ đó. máy chủ lưu trữ là một tên miền, một đại diện chuỗi của địa chỉ IPv4/v6 hoặc >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31. cổng là tên dịch vụ chuỗi, chẳng hạn như >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]32, số cổng dạng số hoặc >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31. Bằng cách chuyển >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31 làm giá trị của máy chủ và cổng, bạn có thể chuyển >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]35 tới API C bên dưới The family, type and proto arguments can be optionally specified in order to narrow the list of addresses returned. Passing zero as a value for each of these arguments selects the full range of results. The flags argument can be one or several of the >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]36 constants, and will influence how results are computed and returned. For example, >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]37 will disable domain name resolution and will raise an error if host is a domain name The function returns a list of 5-tuples with the following structure >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]38 In these tuples, family, type, proto are all integers and are meant to be passed to the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8 function. canonname will be a string representing the canonical name of the host if >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]40 is part of the flags argument; else canonname will be empty. sockaddr is a tuple describing a socket address, whose format depends on the returned family (a >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]41 2-tuple for >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]7, a >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]43 4-tuple for import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)54), and is meant to be passed to the >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]06 method Raises an auditing event >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]46 with arguments >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]47, >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]48, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)92, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)93, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)94. Ví dụ sau tìm nạp thông tin địa chỉ cho một kết nối TCP giả định tới >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]52 trên cổng 80 (kết quả có thể khác trên hệ thống của bạn nếu IPv6 không được bật) >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))] Đã thay đổi trong phiên bản 3. 2. các tham số hiện có thể được chuyển bằng các đối số từ khóa. Đã thay đổi trong phiên bản 3. 7. đối với địa chỉ multicast IPv6, chuỗi đại diện cho một địa chỉ sẽ không chứa phần import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)50. ổ cắm. getfqdn([tên])¶ Trả lại một tên miền đủ điều kiện cho tên. Nếu tên bị bỏ qua hoặc trống, nó được hiểu là máy chủ lưu trữ cục bộ. Để tìm tên đủ điều kiện, tên máy chủ được trả về bởi import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)19 được chọn, theo sau là bí danh cho máy chủ, nếu có. Tên đầu tiên bao gồm một khoảng thời gian được chọn. Trong trường hợp không có tên miền đủ điều kiện và tên đã được cung cấp, nó sẽ được trả về không thay đổi. Nếu tên trống hoặc bằng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]55, tên máy chủ từ >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]56 được trả vềổ cắm. gethostbyname(tên máy chủ) ¶ Dịch tên máy chủ sang định dạng địa chỉ IPv4. Địa chỉ IPv4 được trả về dưới dạng một chuỗi, chẳng hạn như >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]9. Nếu tên máy chủ là một địa chỉ IPv4, nó được trả về không thay đổi. Xem import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)18 để có giao diện đầy đủ hơn. >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]59 không hỗ trợ phân giải tên IPv6 và thay vào đó nên sử dụng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)24 để hỗ trợ ngăn xếp kép IPv4/v6 Tăng sự kiện kiểm tra >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]61 với đối số >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]62. Tính khả dụng . không phải WASI. ổ cắm. gethostbyname_ex(tên máy chủ) ¶Dịch tên máy chủ sang định dạng địa chỉ IPv4, giao diện mở rộng. Trả về một bộ ba >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]63 trong đó tên máy chủ là tên máy chủ chính của máy chủ lưu trữ, danh sách bí danh là danh sách (có thể trống) các tên máy chủ thay thế cho cùng một địa chỉ và ipaddrlist là danh sách các địa chỉ IPv4 cho cùng một giao diện trên cùng một máy chủ (thường nhưng không . import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)18 không hỗ trợ phân giải tên IPv6 và thay vào đó nên sử dụng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)24 để hỗ trợ ngăn xếp kép IPv4/v6 Tăng sự kiện kiểm tra >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]61 với đối số >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]62. Tính khả dụng . không phải WASI. ổ cắm. gethostname() ¶Trả về một chuỗi chứa tên máy chủ mà trình thông dịch Python hiện đang thực thi Tăng sự kiện kiểm tra >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]68 mà không có đối số. Ghi chú. >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]56 không phải lúc nào cũng trả lại tên miền đủ điều kiện; Tính khả dụng . không phải WASI. ổ cắm. gethostbyaddr(ip_address) ¶Trả về một bộ ba >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]63 trong đó tên máy chủ là tên máy chủ chính phản hồi ip_address đã cho, aliaslist là danh sách (có thể trống) các tên máy chủ thay thế cho cùng một địa chỉ và ipaddrlist là danh sách các địa chỉ IPv4/v6 cho cùng một giao diện trên . Để tìm tên miền đủ điều kiện, hãy sử dụng chức năng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]70. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)19 hỗ trợ cả IPv4 và IPv6 Tăng sự kiện kiểm tra >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]74 với đối số >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]75. Tính khả dụng . không phải WASI. ổ cắm. getnameinfo(sockaddr , cờ)¶Dịch địa chỉ socket sockaddr thành 2-tuple >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]6. Tùy thuộc vào cài đặt của cờ, kết quả có thể chứa một tên miền đủ điều kiện hoặc đại diện địa chỉ số trong máy chủ. Tương tự, cổng có thể chứa tên cổng chuỗi hoặc số cổng dạng số Đối với địa chỉ IPv6, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)50 được thêm vào phần máy chủ lưu trữ nếu sockaddr chứa scope_id có ý nghĩa. Thông thường điều này xảy ra đối với các địa chỉ multicast Để biết thêm thông tin về cờ, bạn có thể tham khảo getnameinfo(3) Tăng sự kiện kiểm tra >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]78 với đối số >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]79. Tính khả dụng . không phải WASI. ổ cắm. getprotobyname(protocolname) ¶Dịch tên giao thức internet (ví dụ: >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]80) thành một hằng số phù hợp để chuyển làm đối số thứ ba (tùy chọn) cho hàm import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8. Điều này thường chỉ cần thiết cho các ổ cắm được mở ở chế độ “thô” ( import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)80); Tính khả dụng . không phải WASI. ổ cắm. getservbyname(tên dịch vụ[ , protocolname])¶Dịch tên dịch vụ internet và tên giao thức thành số cổng cho dịch vụ đó. Tên giao thức tùy chọn, nếu được cung cấp, phải là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]83 hoặc >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]84, nếu không, bất kỳ giao thức nào cũng sẽ khớp Tăng sự kiện kiểm tra >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]85 với các đối số >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]86, >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]87. Tính khả dụng . không phải WASI. ổ cắm. getservbyport(cổng[ , protocolname])¶Dịch số cổng internet và tên giao thức thành tên dịch vụ cho dịch vụ đó. Tên giao thức tùy chọn, nếu được cung cấp, phải là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]83 hoặc >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]84, nếu không, bất kỳ giao thức nào cũng sẽ khớp Tăng sự kiện kiểm tra >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]90 với các đối số >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]48, >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]87. Tính khả dụng . không phải WASI. ổ cắm. ntohl(x) ¶Chuyển đổi số nguyên dương 32 bit từ mạng sang thứ tự byte lưu trữ. Trên các máy có thứ tự byte máy chủ giống với thứ tự byte mạng, đây là lệnh cấm; ổ cắm. ntohs(x) ¶Chuyển đổi số nguyên dương 16 bit từ mạng sang thứ tự byte lưu trữ. Trên các máy có thứ tự byte máy chủ giống với thứ tự byte mạng, đây là lệnh cấm; Đã thay đổi trong phiên bản 3. 10. Tăng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]93 nếu x không vừa với số nguyên không dấu 16 bit. ổ cắm. htonl(x) ¶ Chuyển đổi số nguyên dương 32 bit từ máy chủ sang thứ tự byte mạng. Trên các máy có thứ tự byte máy chủ giống với thứ tự byte mạng, đây là lệnh cấm; ổ cắm. htons(x) ¶Chuyển đổi số nguyên dương 16 bit từ máy chủ sang thứ tự byte mạng. Trên các máy có thứ tự byte máy chủ giống với thứ tự byte mạng, đây là lệnh cấm; Đã thay đổi trong phiên bản 3. 10. Tăng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]93 nếu x không vừa với số nguyên không dấu 16 bit. ổ cắm. inet_aton(ip_string) ¶ Chuyển đổi địa chỉ IPv4 từ định dạng chuỗi tứ giác chấm (ví dụ: '123. 45. 67. 89') sang định dạng nhị phân được đóng gói 32 bit, dưới dạng đối tượng byte có độ dài bốn ký tự. Điều này rất hữu ích khi trò chuyện với một chương trình sử dụng thư viện C tiêu chuẩn và cần các đối tượng thuộc loại >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]95, là loại C cho tệp nhị phân được đóng gói 32 bit mà hàm này trả về >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]96 cũng chấp nhận các chuỗi có ít hơn ba dấu chấm; Nếu chuỗi địa chỉ IPv4 được chuyển đến chức năng này không hợp lệ, thì import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 sẽ được nâng lên. Lưu ý rằng chính xác những gì hợp lệ phụ thuộc vào việc triển khai C cơ bản của >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]96 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]96 không hỗ trợ IPv6 và nên sử dụng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)500 thay thế cho hỗ trợ ngăn xếp kép IPv4/v6ổ cắm. inet_ntoa(packed_ip) ¶ Chuyển đổi địa chỉ IPv4 được đóng gói 32 bit (a đối tượng giống như byte có độ dài bốn byte) thành biểu diễn chuỗi bốn dấu chấm tiêu chuẩn của nó . 45. 67. 89’). Điều này hữu ích khi trò chuyện với một chương trình sử dụng thư viện C tiêu chuẩn và cần các đối tượng thuộc loại >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]95, là loại C cho dữ liệu nhị phân được đóng gói 32 bit mà hàm này lấy làm đối số. Nếu chuỗi byte được truyền cho hàm này có độ dài không chính xác là 4 byte, thì import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 sẽ được nâng lên. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)503 không hỗ trợ IPv6 và nên sử dụng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)504 để hỗ trợ ngăn xếp kép IPv4/v6 thay thế Changed in version 3. 5. Writable bytes-like object is now accepted. ổ cắm. inet_pton(address_family , ip_string)¶Chuyển đổi địa chỉ IP từ định dạng chuỗi dành riêng cho họ sang định dạng nhị phân được đóng gói. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)500 rất hữu ích khi một thư viện hoặc giao thức mạng gọi một đối tượng thuộc loại >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]95 (tương tự như >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]96) hoặc import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)508 Các giá trị được hỗ trợ cho address_family hiện tại là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]7 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)54. Nếu chuỗi địa chỉ IP ip_string không hợp lệ, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 sẽ được nâng lên. Lưu ý rằng chính xác những gì hợp lệ phụ thuộc vào cả giá trị của address_family và triển khai cơ bản của import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)500 Tính khả dụng . Hệ điều hành Unix, Windows. Đã thay đổi trong phiên bản 3. 4. Đã thêm hỗ trợ Windows ổ cắm. inet_ntop(address_family , packed_ip)¶Chuyển đổi địa chỉ IP được đóng gói (a đối tượng giống như byte của một số byte) thành biểu diễn chuỗi tiêu chuẩn, dành riêng cho họ ( . import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)504 hữu ích khi một thư viện hoặc giao thức mạng trả về một đối tượng thuộc loại >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]95 (tương tự như import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)503) hoặc import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)508. Các giá trị được hỗ trợ cho address_family hiện tại là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]7 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)54. Nếu đối tượng bytepack_ip không có độ dài chính xác cho họ địa chỉ đã chỉ định, thì >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]19 sẽ được nâng lên. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 được đưa ra do lỗi từ cuộc gọi đến import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)504 Tính khả dụng . Hệ điều hành Unix, Windows. Đã thay đổi trong phiên bản 3. 4. Đã thêm hỗ trợ Windows Changed in version 3. 5. Writable bytes-like object is now accepted. ổ cắm. CMSG_LEN(độ dài) ¶Trả về tổng độ dài, không có phần đệm ở cuối, của một mục dữ liệu phụ trợ với dữ liệu được liên kết có độ dài nhất định. This value can often be used as the buffer size for import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 to receive a single item of ancillary data, but RFC 3542 requires portable applications to use import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)525 and thus include space for padding, even when the item will be the last in the buffer. Tăng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]93 nếu chiều dài nằm ngoài phạm vi giá trị cho phép Tính khả dụng . Unix, không phải Emscripten, không phải WASI. Hầu hết các nền tảng Unix Mới trong phiên bản 3. 3 ổ cắm. CMSG_SPACE(độ dài) ¶Return the buffer size needed for import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 to receive an ancillary data item with associated data of the given length, along with any trailing padding. Không gian bộ đệm cần thiết để nhận nhiều mục là tổng của các giá trị import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)525 cho độ dài dữ liệu được liên kết của chúng. Tăng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]93 nếu chiều dài nằm ngoài phạm vi giá trị cho phép Note that some systems might support ancillary data without providing this function. Cũng lưu ý rằng việc đặt kích thước bộ đệm bằng cách sử dụng kết quả của chức năng này có thể không giới hạn chính xác lượng dữ liệu phụ trợ có thể nhận được, vì dữ liệu bổ sung có thể vừa với vùng đệm Tính khả dụng . Unix, không phải Emscripten, không phải WASI. hầu hết các nền tảng Unix Mới trong phiên bản 3. 3 ổ cắm. getdefaulttimeout() ¶Trả lại thời gian chờ mặc định tính bằng giây (float) cho các đối tượng ổ cắm mới. A value of >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31 indicates that new socket objects have no timeout. Khi mô-đun ổ cắm được nhập lần đầu tiên, giá trị mặc định là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31ổ cắm. setdefaulttimeout(thời gian chờ) ¶ Đặt thời gian chờ mặc định tính bằng giây (float) cho các đối tượng ổ cắm mới. Khi mô-đun ổ cắm được nhập lần đầu tiên, giá trị mặc định là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31. See import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)13 for possible values and their respective meaningssocket. sethostname(tên) ¶ Set the machine’s hostname to name. Điều này sẽ tăng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 nếu bạn không có đủ quyền Tăng sự kiện kiểm tra import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)535 với đối số import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)536. Tính khả dụng . Unix. Mới trong phiên bản 3. 3 ổ cắm. if_nameindex() ¶Trả về danh sách các bộ thông tin giao diện mạng (chỉ số int, chuỗi tên). import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 nếu cuộc gọi hệ thống không thành công Tính khả dụng . Unix, Windows, không phải Emscripten, không phải WASI. Mới trong phiên bản 3. 3 Đã thay đổi trong phiên bản 3. 8. Hỗ trợ Windows đã được thêm vào. Note Trên các giao diện mạng Windows có các tên khác nhau trong các ngữ cảnh khác nhau (tất cả các tên đều là ví dụ)
Hàm này trả về tên của biểu mẫu thứ hai từ danh sách, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)539 trong trường hợp ví dụ nàyổ cắm. if_nametoindex(if_name) ¶ Trả về số chỉ mục giao diện mạng tương ứng với tên giao diện. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 nếu không tồn tại giao diện với tên đã cho Tính khả dụng . Unix, Windows, không phải Emscripten, không phải WASI. Mới trong phiên bản 3. 3 Đã thay đổi trong phiên bản 3. 8. Hỗ trợ Windows đã được thêm vào. See also "Tên giao diện" là một tên như được ghi lại trong import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)544ổ cắm. if_indextoname(if_index) ¶ Trả về tên giao diện mạng tương ứng với số chỉ mục giao diện. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)11 nếu không tồn tại giao diện với chỉ mục đã cho Tính khả dụng . Unix, Windows, không phải Emscripten, không phải WASI. Mới trong phiên bản 3. 3 Đã thay đổi trong phiên bản 3. 8. Hỗ trợ Windows đã được thêm vào. See also "Tên giao diện" là một tên như được ghi lại trong import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)544socket. send_fds(sock , buffers , fds[ , flags[ , address]]) ¶ Send the list of file descriptors fds over an >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]3 socket sock. Tham số fds là một chuỗi các bộ mô tả tệp. Tham khảo import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548 để biết tài liệu về các tham số này Tính khả dụng . Unix, Windows, không phải Emscripten, không phải WASI. Nền tảng Unix hỗ trợ cơ chế import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)550 New in version 3. 9 ổ cắm. recv_fds(sock , bufsize , maxfds[ , flags]) ¶Receive up to maxfds file descriptors from an >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]3 socket sock. Return import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)552. Tham khảo import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 để biết tài liệu về các tham số này Tính khả dụng . Unix, Windows, không phải Emscripten, không phải WASI. Nền tảng Unix hỗ trợ cơ chế import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)550 New in version 3. 9 Note Bất kỳ số nguyên bị cắt nào ở cuối danh sách bộ mô tả tệp Socket Objects¶Các đối tượng ổ cắm có các phương thức sau. Except for import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)556, these correspond to Unix system calls applicable to sockets Changed in version 3. 2. Support for the context manager protocol was added. Exiting the context manager is equivalent to calling import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)557. socket. accept() ¶ Chấp nhận kết nối. Ổ cắm phải được liên kết với một địa chỉ và lắng nghe các kết nối. Giá trị trả về là một cặp import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)558 trong đó conn là một đối tượng ổ cắm mới có thể sử dụng để gửi và nhận dữ liệu trên kết nối và địa chỉ là địa chỉ được liên kết với ổ cắm ở đầu kia của kết nối Ổ cắm mới được tạo là không thể kế thừa . Changed in version 3. 4. Ổ cắm hiện không thể kế thừa. Changed in version 3. 5. Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ, thì phương pháp hiện sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 (xem PEP 475 để biết lý do). ổ cắm. ràng buộc(địa chỉ) ¶ Liên kết ổ cắm với địa chỉ. Ổ cắm phải chưa bị ràng buộc. (Định dạng của địa chỉ phụ thuộc vào họ địa chỉ — xem ở trên. ) Tăng sự kiện kiểm tra import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)560 với các đối số import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)91, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)562. Tính khả dụng . không phải WASI. socket. đóng() ¶Mark the socket closed. Tài nguyên hệ thống cơ bản (e. g. a file descriptor) is also closed when all file objects from import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)556 are closed. Once that happens, all future operations on the socket object will fail. The remote end will receive no more data (after queued data is flushed) Các ổ cắm tự động đóng khi chúng được thu gom rác, nhưng nên ____1557 chúng một cách rõ ràng hoặc sử dụng câu lệnh _____1565 xung quanh chúng Đã thay đổi trong phiên bản 3. 6. ______111 hiện được nâng lên nếu xảy ra lỗi khi thực hiện lệnh gọi import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)557 cơ bản. Note import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)557 giải phóng tài nguyên được liên kết với kết nối nhưng không nhất thiết phải đóng kết nối ngay lập tức. Nếu bạn muốn đóng kết nối kịp thời, hãy gọi cho import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)569 trước import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)557ổ cắm. connect(address) ¶ Connect to a remote socket at address. (The format of address depends on the address family — see above. ) Nếu kết nối bị gián đoạn bởi một tín hiệu, phương thức sẽ đợi cho đến khi kết nối hoàn tất hoặc tăng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)30 khi hết thời gian chờ, nếu trình xử lý tín hiệu không đưa ra ngoại lệ và ổ cắm đang chặn hoặc hết thời gian chờ. Đối với các ổ cắm không chặn, phương pháp này sẽ đưa ra một ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 nếu kết nối bị gián đoạn bởi một tín hiệu (hoặc ngoại lệ do bộ xử lý tín hiệu đưa ra) Tăng sự kiện kiểm tra import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)573 với các đối số import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)91, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)562. Đã thay đổi trong phiên bản 3. 5. Phương thức hiện đợi cho đến khi kết nối hoàn tất thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 nếu kết nối bị gián đoạn bởi tín hiệu, trình xử lý tín hiệu không đưa ra ngoại lệ và ổ cắm đang bị chặn hoặc hết thời gian chờ . Tính khả dụng . không phải WASI. ổ cắm. connect_ex(địa chỉ) ¶Giống như import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)577, nhưng trả về một chỉ báo lỗi thay vì đưa ra một ngoại lệ đối với các lỗi được trả về bởi lệnh gọi import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)578 cấp độ C (các sự cố khác, chẳng hạn như “không tìm thấy máy chủ”, vẫn có thể đưa ra các ngoại lệ). Chỉ báo lỗi là >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]17 nếu thao tác thành công, nếu không thì giá trị của biến import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)580. This is useful to support, for example, asynchronous connects Tăng sự kiện kiểm tra import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)573 với các đối số import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)91, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)562. Tính khả dụng . không phải WASI. socket. tách() ¶Đặt đối tượng ổ cắm vào trạng thái đóng mà không thực sự đóng bộ mô tả tệp bên dưới. The file descriptor is returned, and can be reused for other purposes Mới trong phiên bản 3. 2 ổ cắm. dup() ¶Nhân đôi ổ cắm Ổ cắm mới được tạo là không thể kế thừa . Changed in version 3. 4. Ổ cắm hiện không thể kế thừa. Tính khả dụng . không phải WASI. ổ cắm. fileno() ¶Trả về bộ mô tả tệp của ổ cắm (một số nguyên nhỏ) hoặc -1 nếu không thành công. Điều này hữu ích với import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)584 Trong Windows, không thể sử dụng số nguyên nhỏ được phương thức này trả về khi có thể sử dụng bộ mô tả tệp (chẳng hạn như import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)585). Unix does not have this limitationổ cắm. get_inheritable() ¶ Get the inheritable flag of the socket’s file descriptor or socket’s handle. >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]11 nếu ổ cắm có thể được kế thừa trong các tiến trình con, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)587 nếu không thể. Mới trong phiên bản 3. 4 ổ cắm. getpeername() ¶Trả lại địa chỉ từ xa mà ổ cắm được kết nối. Chẳng hạn, điều này rất hữu ích để tìm ra số cổng của ổ cắm IPv4/v6 từ xa. (The format of the address returned depends on the address family — see above. ) On some systems this function is not supported ổ cắm. getsockname() ¶Trả về địa chỉ riêng của ổ cắm. This is useful to find out the port number of an IPv4/v6 socket, for instance. (Định dạng của địa chỉ được trả về tùy thuộc vào họ địa chỉ — xem ở trên. ) ổ cắm. getsockopt(cấp độ , optname[, buflen])¶Return the value of the given socket option (see the Unix man page getsockopt(2)). The needed symbolic constants ( import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)588 etc. ) được xác định trong mô-đun này. Nếu không có buflen, một tùy chọn số nguyên được sử dụng và giá trị số nguyên của nó được trả về bởi hàm. Nếu có buflen, nó chỉ định độ dài tối đa của bộ đệm được sử dụng để nhận tùy chọn và bộ đệm này được trả về dưới dạng đối tượng byte. Việc giải mã nội dung của bộ đệm tùy thuộc vào người gọi (xem mô-đun tích hợp tùy chọn import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)589 để biết cách giải mã các cấu trúc C được mã hóa dưới dạng chuỗi byte) Tính khả dụng . không phải WASI. socket. bị chặn() ¶Return >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]11 if socket is in blocking mode, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)587 if in non-blocking Điều này tương đương với việc kiểm tra import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)592 New in version 3. 7 ổ cắm. thời gian chờ() ¶Return the timeout in seconds (float) associated with socket operations, or >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31 if no timeout is set. This reflects the last call to import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)12 or import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)13ổ cắm. ioctl(control , option) ¶Platform các cửa sổ Phương thức import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)63 là một giao diện giới hạn đối với giao diện hệ thống WSAIoctl. Vui lòng tham khảo tài liệu Win32 để biết thêm thông tin Trên các nền tảng khác, có thể sử dụng các hàm chung import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)597 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)598; Hiện tại chỉ có các mã kiểm soát sau được hỗ trợ. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)599, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)500 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)64 Đã thay đổi trong phiên bản 3. 6. ______164 đã được thêm vào. ổ cắm. lắng nghe([tồn đọng])¶Enable a server to accept connections. Nếu chỉ định tồn đọng thì ít nhất phải bằng 0 (nếu thấp hơn thì đặt bằng 0); . If not specified, a default reasonable value is chosen Tính khả dụng . không phải WASI. Đã thay đổi trong phiên bản 3. 5. The backlog parameter is now optional. Trả về đối tượng tệp được liên kết với ổ cắm. The exact returned type depends on the arguments given to import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)556. Các đối số này được diễn giải theo cách tương tự như bởi hàm import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)504 tích hợp, ngoại trừ các giá trị chế độ được hỗ trợ duy nhất là import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)505 (mặc định), import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)506 và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)507. Ổ cắm phải ở chế độ chặn; Việc đóng đối tượng tệp được trả về bởi import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)556 sẽ không đóng ổ cắm ban đầu trừ khi tất cả các đối tượng tệp khác đã được đóng và import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)89 đã được gọi trên đối tượng ổ cắm Note On Windows, the file-like object created by import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)556 cannot be used where a file object with a file descriptor is expected, such as the stream arguments of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)511ổ cắm. recv(bufsize[ , flags])¶ Receive data from the socket. Giá trị trả về là một đối tượng byte đại diện cho dữ liệu nhận được. The maximum amount of data to be received at once is specified by bufsize. See the Unix manual page recv(2) for the meaning of the optional argument flags; it defaults to zero Note Để phù hợp nhất với thực tế phần cứng và mạng, giá trị của bufsize phải là lũy thừa tương đối nhỏ của 2, ví dụ: 4096 Changed in version 3. 5. Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ, thì phương pháp hiện sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 (xem PEP 475 để biết lý do). socket. recvfrom(bufsize[ , flags]) ¶ Nhận dữ liệu từ ổ cắm. Giá trị trả về là một cặp import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)513 trong đó byte là đối tượng byte đại diện cho dữ liệu nhận được và địa chỉ là địa chỉ của ổ cắm gửi dữ liệu. See the Unix manual page recv(2) for the meaning of the optional argument flags; it defaults to zero. (Định dạng của địa chỉ phụ thuộc vào họ địa chỉ — xem ở trên. ) Changed in version 3. 5. Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ, thì phương pháp hiện sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 (xem PEP 475 để biết lý do). Changed in version 3. 7. Đối với địa chỉ IPv6 phát đa hướng, mục đầu tiên của địa chỉ không chứa phần import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)50 nữa. In order to get full IPv6 address use import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)25. ổ cắm. recvmsg(bufsize[ , ancbufsize[, flags]])¶ Nhận dữ liệu bình thường (tối đa byte kích thước) và dữ liệu phụ trợ từ ổ cắm. Đối số ancbufsize đặt kích thước tính bằng byte của bộ đệm bên trong được sử dụng để nhận dữ liệu phụ trợ; . Kích thước bộ đệm phù hợp cho dữ liệu phụ trợ có thể được tính bằng cách sử dụng import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)525 hoặc import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)518 và các mục không vừa với bộ đệm có thể bị cắt bớt hoặc loại bỏ. Đối số flags mặc định là 0 và có cùng ý nghĩa như đối với import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 Giá trị trả về là 4-tuple. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)520. Mục dữ liệu là một đối tượng >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]61 chứa dữ liệu không phụ trợ nhận được. Mục ancdata là danh sách không hoặc nhiều bộ dữ liệu import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)522 đại diện cho dữ liệu phụ trợ (thông báo điều khiển) nhận được. cmsg_level and cmsg_type are integers specifying the protocol level and protocol-specific type respectively, and cmsg_data is a >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]61 object holding the associated data. The msg_flags item is the bitwise OR of various flags indicating conditions on the received message; see your system documentation for details. Nếu ổ cắm nhận không được kết nối, địa chỉ là địa chỉ của ổ cắm gửi, nếu có; import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 raises an exception after the system call returns, it will first attempt to close any file descriptors received via this mechanism. Some systems do not indicate the truncated length of ancillary data items which have been only partially received. Nếu một mục dường như mở rộng ra ngoài phần cuối của bộ đệm, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 sẽ phát hành một import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)533 và sẽ trả lại phần của nó nằm trong bộ đệm với điều kiện là nó không bị cắt bớt trước khi bắt đầu dữ liệu liên quan của nó Trên các hệ thống hỗ trợ cơ chế import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)550, chức năng sau sẽ nhận tối đa bộ mô tả tệp maxfds, trả về dữ liệu thông báo và danh sách chứa bộ mô tả (trong khi bỏ qua các điều kiện không mong muốn, chẳng hạn như nhận được thông báo điều khiển không liên quan). Xem thêm import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548 import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 Tính khả dụng . Unix. Hầu hết các nền tảng Unix Mới trong phiên bản 3. 3 Changed in version 3. 5. Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ, thì phương pháp hiện sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 (xem PEP 475 để biết lý do). socket. recvmsg_into(bộ đệm[ , ancbufsize[, flags]])¶ Receive normal data and ancillary data from the socket, behaving as import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 would, but scatter the non-ancillary data into a series of buffers instead of returning a new bytes object. Đối số bộ đệm phải là đối tượng có thể lặp lại của các đối tượng xuất bộ đệm có thể ghi (e. g. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)538 đối tượng); . The operating system may set a limit ( import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)539 value import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)540) on the number of buffers that can be used. The ancbufsize and flags arguments have the same meaning as for import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 Giá trị trả về là 4-tuple. import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)542, trong đó nbytes là tổng số byte dữ liệu không phụ trợ được ghi vào bộ đệm và ancdata, msg_flags và địa chỉ giống như đối với import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 Example import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 Tính khả dụng . Unix. Hầu hết các nền tảng Unix Mới trong phiên bản 3. 3 ổ cắm. recvfrom_into(buffer[ , nbytes[ , flags]]) ¶Receive data from the socket, writing it into buffer instead of creating a new bytestring. The return value is a pair import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)544 where nbytes is the number of bytes received and address is the address of the socket sending the data. Xem trang thủ công Unix recv(2) để biết ý nghĩa của các cờ đối số tùy chọn; . (Định dạng của địa chỉ phụ thuộc vào họ địa chỉ — xem ở trên. )ổ cắm. recv_into(bộ đệm[ , nbytes[, flags]])¶ Nhận tối đa nbyte byte từ ổ cắm, lưu trữ dữ liệu vào bộ đệm thay vì tạo chuỗi byte mới. If nbytes is not specified (or 0), receive up to the size available in the given buffer. Returns the number of bytes received. Xem trang thủ công Unix recv(2) để biết ý nghĩa của các cờ đối số tùy chọn; ổ cắm. gửi(byte[ , flags])¶Send data to the socket. Ổ cắm phải được kết nối với ổ cắm từ xa. Đối số cờ tùy chọn có cùng ý nghĩa như đối với import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 ở trên. Trả về số byte đã gửi. Các ứng dụng có trách nhiệm kiểm tra xem tất cả dữ liệu đã được gửi chưa; . For further information on this topic, consult the Socket Programming HOWTO . Changed in version 3. 5. Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ, thì phương pháp hiện sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 (xem PEP 475 để biết lý do). ổ cắm. gửi đi(byte[ , flags])¶ Gửi dữ liệu đến ổ cắm. Ổ cắm phải được kết nối với ổ cắm từ xa. Đối số cờ tùy chọn có cùng ý nghĩa như đối với import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 ở trên. Unlike import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548, this method continues to send data from bytes until either all data has been sent or an error occurs. >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31 được trả lại khi thành công. Khi có lỗi, một ngoại lệ được đưa ra và không có cách nào để xác định lượng dữ liệu, nếu có, đã được gửi thành công Đã thay đổi trong phiên bản 3. 5. Thời gian chờ của ổ cắm không còn được đặt lại mỗi khi dữ liệu được gửi thành công. Thời gian chờ của ổ cắm hiện là tổng thời lượng tối đa để gửi tất cả dữ liệu. Changed in version 3. 5. Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ, thì phương pháp hiện sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 (xem PEP 475 để biết lý do). socket. sendto(bytes , address) ¶ socket. gửi tới(byte , cờ, address) Send data to the socket. Không nên kết nối ổ cắm với ổ cắm từ xa vì ổ cắm đích được chỉ định theo địa chỉ. The optional flags argument has the same meaning as for import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 above. Trả về số byte đã gửi. (Định dạng của địa chỉ phụ thuộc vào họ địa chỉ — xem ở trên. ) Tăng sự kiện kiểm tra import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)552 với các đối số import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)91, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)562. Changed in version 3. 5. Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ, thì phương pháp hiện sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 (xem PEP 475 để biết lý do). ổ cắm. sendmsg(bộ đệm[ , ancdata[, flags[, address]]])¶ Gửi dữ liệu thông thường và phụ trợ đến ổ cắm, thu thập dữ liệu không phụ trợ từ một loạt bộ đệm và nối dữ liệu đó thành một thông báo duy nhất. Đối số bộ đệm chỉ định dữ liệu không phụ trợ dưới dạng có thể lặp lại đối tượng giống như byte (e. g. >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]61 đối tượng); . Đối số ancdata chỉ định dữ liệu phụ trợ (thông báo điều khiển) dưới dạng có thể lặp lại từ 0 hoặc nhiều bộ dữ liệu import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)522, trong đó cmsg_level và cmsg_type lần lượt là các số nguyên chỉ định cấp độ giao thức và loại dành riêng cho giao thức và cmsg_data là một đối tượng dạng byte chứa dữ liệu được liên kết. Lưu ý rằng một số hệ thống (cụ thể là hệ thống không có import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)525) có thể chỉ hỗ trợ gửi một thông báo điều khiển cho mỗi cuộc gọi. Đối số flags mặc định là 0 và có cùng ý nghĩa như đối với import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548. Nếu địa chỉ được cung cấp chứ không phải >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31, nó sẽ đặt địa chỉ đích cho tin nhắn. Giá trị trả về là số byte dữ liệu không phụ trợ được gửi. Hàm sau gửi danh sách các bộ mô tả tệp fds qua ổ cắm >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]3, trên các hệ thống hỗ trợ cơ chế import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)550. Xem thêm import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524 import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 Tính khả dụng . Unix, không phải WASI. Hầu hết các nền tảng Unix Raises an auditing event import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)566 with arguments import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)91, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)562. Mới trong phiên bản 3. 3 Changed in version 3. 5. Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ, thì phương pháp hiện sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)559 (xem PEP 475 để biết lý do). ổ cắm. sendmsg_afalg([msg , ]* , op[ , iv[ , assoclen[ , flags]]]) ¶ Specialized version of import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548 for >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]63 socket. Đặt cờ và độ dài dữ liệu liên quan đến chế độ, IV, AEAD cho ổ cắm >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]63 Availability . Linux >= 2. 6. 38. New in version 3. 6 ổ cắm. sendfile(file , offset=0, count=None)¶Gửi tệp cho đến khi đạt được EOF bằng cách sử dụng hiệu suất cao import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)573 và trả về tổng số byte đã được gửi. file must be a regular file object opened in binary mode. If import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)573 is not available (e. g. Windows) hoặc tệp không phải là tệp thông thường import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548 sẽ được sử dụng thay thế. offset cho biết bắt đầu đọc tệp từ đâu. Nếu được chỉ định, số đếm là tổng số byte cần truyền thay vì gửi tệp cho đến khi đạt đến EOF. File position is updated on return or also in case of error in which case import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)576 can be used to figure out the number of bytes which were sent. Ổ cắm phải là loại import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)42. Non-blocking sockets are not supported Mới trong phiên bản 3. 5 ổ cắm. set_inheritable(có thể kế thừa) ¶Set the inheritable flag of the socket’s file descriptor or socket’s handle. Mới trong phiên bản 3. 4 ổ cắm. thiết lập chặn(cờ) ¶Set blocking or non-blocking mode of the socket. nếu cờ là sai, ổ cắm được đặt thành không chặn, nếu không thì chế độ chặn Phương pháp này là cách viết tắt của một số cuộc gọi import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)13 nhất định
Đã thay đổi trong phiên bản 3. 7. Phương thức không còn áp dụng cờ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)95 trên import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)97. ổ cắm. thời gian giải quyết(giá trị) ¶ Đặt thời gian chờ khi chặn hoạt động của ổ cắm. Đối số giá trị có thể là một số dấu phẩy động không âm biểu thị giây hoặc >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31. If a non-zero value is given, subsequent socket operations will raise a import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)586 exception if the timeout period value has elapsed before the operation has completed. Nếu không được đưa ra, ổ cắm được đặt ở chế độ không chặn. Nếu cung cấp >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31, ổ cắm được đặt ở chế độ chặn Để biết thêm thông tin, vui lòng tham khảo ghi chú về thời gian chờ của ổ cắm . Đã thay đổi trong phiên bản 3. 7. Phương thức không còn bật cờ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)95 trên import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)97. ổ cắm. setsockopt(cấp độ , optname . , value: int) ¶ ổ cắm. setsockopt(cấp độ , optname . , value: bộ đệm)ổ cắm. setsockopt(cấp độ , optname . , None, optlen: int) Set the value of the given socket option (see the Unix manual page setsockopt(2)). The needed symbolic constants are defined in the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 module ( import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)588 etc. ). The value can be an integer, >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31 or a bytes-like object representing a buffer. In the later case it is up to the caller to ensure that the bytestring contains the proper bits (see the optional built-in module import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)589 for a way to encode C structures as bytestrings). When value is set to >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31, optlen argument is required. It’s equivalent to call import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)44 C function with import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)596 and import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)597. Changed in version 3. 5. Writable bytes-like object is now accepted. Changed in version 3. 6. setsockopt(level, optname, None, optlen. int) form added. Tính khả dụng . không phải WASI. socket. shutdown(how) ¶Shut down one or both halves of the connection. If how is import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)598, further receives are disallowed. If how is import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)599, further sends are disallowed. If how is import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)500, further sends and receives are disallowed Tính khả dụng . không phải WASI. socket. share(process_id) ¶Duplicate a socket and prepare it for sharing with a target process. The target process must be provided with process_id. The resulting bytes object can then be passed to the target process using some form of interprocess communication and the socket can be recreated there using import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)501. Once this method has been called, it is safe to close the socket since the operating system has already duplicated it for the target process Tính khả dụng . các cửa sổ. Mới trong phiên bản 3. 3 Note that there are no methods import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)9 or >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]0; use import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 and import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)548 without flags argument instead Socket objects also have these (read-only) attributes that correspond to the values given to the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 constructorsocket. family ¶ The socket family socket. type ¶The socket type socket. proto ¶The socket protocol Notes on socket timeouts¶A socket object can be in one of three modes. blocking, non-blocking, or timeout. Sockets are by default always created in blocking mode, but this can be changed by calling import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)33
Note At the operating system level, sockets in timeout mode are internally set in non-blocking mode. Ngoài ra, các chế độ chặn và thời gian chờ được chia sẻ giữa các bộ mô tả tệp và các đối tượng ổ cắm đề cập đến cùng một điểm cuối mạng. Chi tiết triển khai này có thể có những hậu quả rõ ràng nếu e. g. you decide to use the >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]24 of a socket Timeouts and the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr) 511 method¶The import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)578 operation is also subject to the timeout setting, and in general it is recommended to call import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)13 before calling import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)578 or pass a timeout parameter to import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)515. However, the system network stack may also return a connection timeout error of its own regardless of any Python socket timeout setting Timeouts and the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr) 516 method¶If >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]09 is not >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]31, sockets returned by the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 method inherit that timeout. Otherwise, the behaviour depends on settings of the listening socket
Example¶Here are four minimal example programs using the TCP/IP protocol. a server that echoes all data that it receives back (servicing only one client), and a client using it. Note that a server must perform the sequence import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)523, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)524, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 (possibly repeating the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 to service more than one client), while a client only needs the sequence import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)8, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)578. Also note that the server does not import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)529/ import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 on the socket it is listening on but on the new socket returned by import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)519 The first two examples support IPv4 only import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]5 The next two examples are identical to the above two, but support both IPv4 and IPv6. The server side will listen to the first address family available (it should listen to both instead). On most of IPv6-ready systems, IPv6 will take precedence and the server may not accept IPv4 traffic. The client side will try to connect to the all addresses returned as a result of the name resolution, and sends traffic to the first one connected successfully >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]6 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]5 The next example shows how to write a very simple network sniffer with raw sockets on Windows. The example requires administrator privileges to modify the interface import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)0 The next example shows how to use the socket interface to communicate to a CAN network using the raw socket protocol. To use CAN with the broadcast manager protocol instead, open a socket with import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)1 After binding ( import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)83) or connecting ( import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)84) the socket, you can use the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)534, and the import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)535 operations (and their counterparts) on the socket object as usual This last example might require special privileges import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)2 Running an example several times with too small delay between executions, could lead to this error import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)3 This is because the previous execution has left the socket in a import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)536 state, and can’t be immediately reused There is a import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)5 flag to set, in order to prevent this, import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)538 import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)4 the >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), (socket.AF_INET, socket.SOCK_STREAM, 6, '', ('93.184.216.34', 80))]22 flag tells the kernel to reuse a local socket in import socket addr = ("", 8080) # all interfaces, port 8080 if socket.has_dualstack_ipv6(): s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True) else: s = socket.create_server(addr)536 state, without waiting for its natural timeout to expire See also For an introduction to socket programming (in C), see the following papers
both in the UNIX Programmer’s Manual, Supplementary Documents 1 (sections PS1. 7 and PS1. 8). The platform-specific reference material for the various socket-related system calls are also a valuable source of information on the details of socket semantics. For Unix, refer to the manual pages; for Windows, see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may want to refer to RFC 3493 titled Basic Socket Interface Extensions for IPv6 How does Python handle timeout errors?In Python, use the stdin. readline() and stdout. write() instead of input and print . Ensure that the input value to test cases is passed in the expected format.
How does socket timeout work Python?A new Python socket by default doesn't have a timeout. Its timeout defaults to None . Not setting the connection timeout parameter can result in blocking socket mode. In blocking mode, operations block until complete or the system returns an error.
Does Python close the socket automatically?Python takes the automatic shutdown a step further, and says that when a socket is garbage collected, it will automatically do a close if it's needed .
How to fix timeout exception in selenium Python?Giải pháp . You can manually increase the wait time by hit-and-trial. If the problem persists for a longer period of time, there may be some other issue and you should continue onto the next solution Bạn có thể thêm thời gian chờ một cách rõ ràng bằng cách sử dụng JavaScript Executor |