代码拉取完成,页面将自动刷新
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()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。