socket模块中socket类
1.网络编程之IP地址&子网掩码2.端口&端口号3.Socket(套接字)
4.socket模块中socket类
5.socket加密传输6.socket加密传输&mysql应用7.Socket客户端实现8.Socket客户端与服务端9.TCP(Transmission Control Protocol)传输控制协议10.网络传输数据的编解码11.TCP客户端开发12.socket之send和recv原理剖析13.多任务版TCP服务端程序开发14.UDP15.http协议之网址16.http协议之简介17.http协议之请求报文18.http协议之响应报文19.搭建Python⾃带静态Web服务器20.自研静态Web服务器并返回固定⻚⾯数据21.静态web服务器-根据请求返回指定页面数据22.静态Web服务器-多任务版23.静态Web服务器-以⾯向对象的模式开发24.静态Web服务器-命令⾏启动并动态绑定端⼝号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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律