socket模块中socket类
Socket模块是Python标准库中的一个网络编程模块,提供了一种用于网络通信的接口。其中的Socket类是用来创建套接字对象的,通过该对象可以进行网络通信
Socket类的常用方法及其说明:
-
Socket类的构造方法:
socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None): 创建一个新的套接字对象。- family:指定地址族,默认为AF_INET表示IPv4地址族。
- type:指定套接字类型,可以是
socket.SOCK_STREAM(流式套接字,用于TCP,默认值)或socket.SOCK_DGRAM(数据报套接字,用于UDP)。 - proto:指定协议,默认为0表示使用默认协议。
- fileno:指定一个已有的文件描述符,将其封装为套接字对象。
-
套接字连接相关方法:
connect(address): 连接到远程服务器。- address:远程服务器的地址,可以是主机名或IP地址加端口号。
-
套接字绑定相关方法:
bind(address): 将套接字绑定到指定地址。- address:本地地址,可以是主机名或IP地址加端口号。
-
套接字监听相关方法:
listen(backlog): 开始监听连接请求。- backlog:指定同时等待连接的最大数量。
-
套接字接收连接相关方法:
accept(): 接收客户端的连接请求,返回新的套接字对象和客户端地址。- 返回值:(新的套接字对象, 客户端地址)
-
套接字发送数据方法:
send(data): 发送数据到已连接的套接字。- data:要发送的数据。
-
套接字接收数据方法:
recv(bufsize): 从套接字接收数据。- bufsize:指定每次最多接收的数据量。
-
套接字关闭相关方法:
close(): 关闭套接字。
说明:
服务器在绑定地址并开始监听后会占用一个端口用于接收客户端的连接请求和进行消息的收发。当客户端发起连接请求时,服务器会通过accept()方法接收该请求,并返回一个新的套接字对象和客户端的地址信息。
这个新的套接字对象与客户端建立了一条独立的通信通道,服务器可以通过这个套接字对象向客户端发送消息,也可以从客户端接收消息。这个套接字对象使用的端口与服务器绑定时指定的端口一致。
如果服务器同时需要处理多个客户端的连接和消息收发,可以在每次接收到新的连接请求时,创建一个新的线程或进程来处理这个连接,以实现并发处理。每个线程或进程都会使用一个独立的套接字对象与对应的客户端进行通信,从而实现多客户端的消息收发。
示例:
1 import socket 2 3 # 创建套接字对象 4 server_socket = socket.socket() 5 6 # 绑定地址 7 server_socket.bind(('localhost', 8888)) 8 9 # 开始监听 10 server_socket.listen(5) 11 print("服务器已启动,等待连接...") 12 13 while True: 14 # 接收连接请求 15 client_socket, client_address = server_socket.accept() 16 print(f"收到来自 {client_address} 的连接请求。") 17 18 # 接收数据 19 data = client_socket.recv(1024).decode() 20 print(f"收到消息:{data}") 21 22 # 发送响应 23 response = "Hello, Client!" 24 client_socket.send(response.encode()) 25 26 # 关闭连接 27 client_socket.close()

浙公网安备 33010602011771号