Python网络、并发编程的深入解析与实战应用
1. 网络编程相关技术
1.1 文件描述符传递与工作进程
在网络编程中,文件描述符的传递有特定的应用场景。例如, worker
函数用于连接服务器并接收文件描述符,处理客户端请求。以下是相关代码:
import socket
import struct
def recv_fd(sock):
msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_LEN(struct.calcsize('i')))
cmsg_level, cmsg_type, cmsg_data = ancdata[0]
sock.sendall(b'OK')
return struct.unpack('i', cmsg_data)[0]
def worker(server_address):
serv = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
serv.connect(server_address)
while True:
fd = recv_fd(serv)
print('WORKER: GOT FD', fd)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM, fileno=fd) as client:
while True:
m