python socket模块
1.socket参数
1 2 3 4 5 6 7 8 9 10 | socket.socket(family = AF_INET, type = SOCK_STREAM,proto = 0 ,fileno = None ) familt: AF_INET:网络文件套接字,默认 AF_UNIX:本地文件套接字 type : SOCK_STREAM:TCP协议,默认 SOCK_DGRAM:UDP协议 proto:通常为 0 fileno:通常为 None |
2.TCPsocket常用方法
TCP socket |
client |
server |
实例化 |
sk = socket.socket() |
sk = socket.socket() |
绑定地址 |
/ |
sk.bind(('127.0.0.1',8888)) |
连接地址 |
sk.connect(('127.0.0.1',8888)) |
/ |
接收请求 |
/ |
conn,addr = sk.accept() |
发送消息 |
sk.send('hi!'.encode('utf-8')) |
conn.send('hi'.encode('utf-8')) |
接收消息 |
ret = sk.recv(1024) |
ret = conn.recv(1024) |
关闭client |
/ |
conn.close() |
关闭server |
sk.close() |
sk.close() |
3.UDPsocket常用方法
UDP socket |
client |
server |
实例化 |
sk = socket.socket(type=socket.SOCK_DGRAM) |
sk = socket.socket(type=socket.SOCK_DGRAM) |
绑定地址 |
/ |
sk.bind(('127.0.0.1',8888)) |
接收消息 |
message,ip = sk.recvfrom(1024) |
message,ip = sk.recvfrom(1024) |
发送消息 |
sk.sendto(str,ip) |
sk.sendto(str,ip) |
断开连接 |
sk.close() |
sk.close() |
2.基于TCP协议的服务端和客户端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #服务端 import socket sk = socket.socket() sk.bind(( '127.0.0.1' , 8888 )) #把地址绑定到套接字,IP为字符串,端口为数字 sk.listen() #监听此连接 conn,addr = sk.accept() #接受客户端链接 ret = conn.recv( 1024 ) #接收客户端信息,指定接收的字节 print (ret) #打印客户端发来的信息 conn.send( 'hi' .encode( 'utf-8' )) #向客户端发送信息,编码为字节形式 conn.close() #关闭客户端套接字 sk.close() #关闭服务器套接字(可选) #客户端 import socket sk = socket.socket() # 创建客户套接字 sk.connect(( '127.0.0.1' , 8898 )) # 尝试连接服务器 sk.send( 'hello!' .encode( 'utf-8' )) #发送消息,以字节形式发送 ret = sk.recv( 1024 ) # 接收回信 print (ret) sk.close() |
3.基于UDPsocket的服务端和客户端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #服务端 import socket sk = socket.socket( type = socket.SOCK_DGRAM) #指定UDP协议 sk.bind(( '127.0.0.1' , 8888 )) #绑定端口地址 msg,ip = sk.recvfrom( 1024 ) #接收请求 str = 'hahaha' .encode( 'utf-8' ) sk.sendto( str ,ip) #发送给客户端 sk.close() #关闭连接 #客户端 import socket sk = socket.socket( type = socket.SOCK_DGRAM) #指定UDP协议 ip = ( '127.0.0.1' , 8888 ) str = 'hi' .encode( 'utf-8' ) sk.sendto( str ,ip) #发送消息 msg,ip = sk.recvfrom( 1024 ) #接收消息 print (msg,ip) sk.close() #关闭连接 |
4.多连接TCPsocket服务端-socketserver
1 2 3 4 5 6 7 8 9 | import socketserver class MySocket(socketserver.BaseRequestHandler): def handle( self ): # 这个方法的名字是固定的,必须是这个名字 # 收发的逻辑代码 msg = self .request.recv( 1024 ).decode( 'utf-8' ) self .request.send(msg.upper().encode( 'utf-8' )) server = socketserver.TCPServer(( '127.0.0.1' , 8080 ),MySocket) # 固定的 server.serve_forever() # 开启一个永久性的服务 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能