Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python异步内核与UDP_Python 2.7_Sockets_Tcp_Udp_Asyncore - Fatal编程技术网

Python 2.7 Python异步内核与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中编写UDP客户机/服务器应用程序吗?我已经用TCP写了一个。我的愿望是将其与对UDP的支持集成在一起

我的问题以前没有得到以下方面的提问/回答:

经过长时间搜索,答案是否。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
将套接字设置为非阻塞。如果 您希望将大量数据快速写入套接字,而不会导致 错误您必须执行一些依赖于应用程序的缓冲 ala
asyncore.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;