Python 2.7 Python异步内核与UDP
我可以在asyncore中编写UDP客户机/服务器应用程序吗?我已经用TCP写了一个。我的愿望是将其与对UDP的支持集成在一起 我的问题以前没有得到以下方面的提问/回答:Python 2.7 Python异步内核与UDP,python-2.7,sockets,tcp,udp,asyncore,Python 2.7,Sockets,Tcp,Udp,Asyncore,我可以在asyncore中编写UDP客户机/服务器应用程序吗?我已经用TCP写了一个。我的愿望是将其与对UDP的支持集成在一起 我的问题以前没有得到以下方面的提问/回答: 经过长时间搜索,答案是否。Asyncore假定底层套接字是面向连接的,即TCP 是的,你可以。下面是一个简单的例子: 类AsyncoreSocketUDP(asyncore.dispatcher): def _u初始化(自身,端口=0): asyncore.dispatcher.\uuuuu init\uuuuu(self)
经过长时间搜索,答案是否。Asyncore假定底层套接字是面向连接的,即TCP 是的,你可以。下面是一个简单的例子:
类AsyncoreSocketUDP(asyncore.dispatcher):
def _u初始化(自身,端口=0):
asyncore.dispatcher.\uuuuu init\uuuuu(self)
self.create_socket(socket.AF_INET,socket.SOCK_DGRAM)
自绑定(('',端口))
#每当有东西要读时,就会调用此函数
def句柄读取(自):
数据,addr=self.recvfrom(2048)
# ... 在这里做一些事情,例如self.sendto(数据,(地址,端口))
def可写(自):
返回False#不希望写入通知
这应该足以让你开始。查看asyncore
模块了解更多想法
次要说明:asyncore.dispatcher
将套接字设置为非阻塞。如果
您希望将大量数据快速写入套接字,而不会导致
错误您必须执行一些依赖于应用程序的缓冲
alaasyncore.dispatcher\u与\u send
感谢这里的(稍微不准确的)代码让我开始:
您好,感谢@bw1024指出了正确的方向,我将添加受您的pandas和python asyncore文档启发的解决方案 我的用例是从UDP流捕获一些JSON ` 导入套接字 导入json 导入异步内核 UDP_IP='127.0.0.1' UDP_端口=2000 类AsyncUDPClient(asyncore.dispatcher): definit(自身、主机、端口): asyncore.dispatcher.init(self) self.create_socket(socket.AF_INET,socket.SOCK_DGRAM) self.bind((主机、端口)) 打印(“connecting..host='{0}''端口='{1}'”。格式(主机,str(端口))) 客户端=AsyncUDPClient(UDP\U IP、UDP\U端口) asyncore.loop() `
p.S不确定为什么代码的格式不正确,因为它运行在python 3.6.9上。好的,这里是一个要点感谢
self.sendto(data,(addr,port))
def handle_connect(self):
print("connected")
def handle_read(self):
data = self.recv(1024)
y = json.loads(data)
print("PM 2.5 ug/m^3 async : %s "% y['PM25MassPerM3'])
def writable(self):
return False;