2 Star 0 Fork 0

ausx/Aurora-LINK for sc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
udp.py 2.76 KB
一键复制 编辑 原始数据 按行查看 历史
Danny 提交于 2023-01-01 22:16 . Fixed issue
import socket
import threading
import base64
import random
class UDP_client(): #UDP客户端
setting = {}
def create(self):#创建/初始化
try:
self.setting.clear()
self.setting.setdefault('sock', socket.socket(
socket.AF_INET, socket.SOCK_DGRAM))
self.setting['sock'].bind(('',random.randint(10000,65535)))
return True
except:
pass
return False
def conn_stt(self, ip, port,buff, ret, id):#连接到 ip 端口, 回调函数, 数据长度
def recv(self,buff,ret,id):
while True:
response, addr = self.setting['sock'].recvfrom(int(buff))
ret('recv',addr[0],response,id)
self.setting.setdefault('addr',(ip,port))
t=threading.Thread(target=recv,args=(self,buff,ret,id))#多线程,用于处理高并发
t.daemon=True
t.start()
return True
def send(self,ip,port, data):#发送
try:
self.setting['sock'].sendto(data.encode('utf-8'),self.setting['addr'])
return True
except:
return False
def break_conn(self,ip):#结束连接
pass
def destroy(self):
self.setting['sock'].close()
class UDP_server(): #UDP服务器
setting = {}
def create(self):#创建/初始化
try:
self.setting.setdefault('sock', socket.socket(
socket.AF_INET, socket.SOCK_STREAM))
return True
None
except:pass
return False
def conn_stt(self,ip,port,buff,ret,id):#启动接收函数,ip,端口 数据长度 回调
def recv(self,buff,ret,id):#接收线程
while True:
try:
clientsocket,addr = self.setting['sock'].accept()
ret('be connected',addr[0],'',id)
t=threading.Thread(target=ret,args=('recv',addr[0],clientsocket.recv(buff).decode(),id,))#多线程,用于处理高并发
t.daemon=True
t.start()
except:raise
try:
self.setting['sock'].bind((ip,port))
self.setting['sock'].listen(20)#最大队列长度20
t=threading.Thread(target=recv,args=(self,buff,ret,id))#多线程,用于处理高并发
t.daemon=True
t.start()
return True
except:pass
def send(self, ip,port,data):#发送
try:
self.setting['conn'].sendto(data.encode('utf-8'),(ip,port))
return True
except:
return False
def break_conn(self,ip):#结束连接
pass
def destroy(self):
self.setting['sock'].close()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ausx/aurora-link-for-sc.git
git@gitee.com:ausx/aurora-link-for-sc.git
ausx
aurora-link-for-sc
Aurora-LINK for sc
master

搜索帮助