我想创建一个类,该类允许在同一端口上发送和接收,并在程序执行操作时从传入消息创建一个事件驱动的应用程序。我对插座没有太多的经验,所以我不知道怎么做。这是我的SimpleLock类,到目前为止它只绑定了套接字。我也在里面放了一个无限循环来监听连接,但是我知道这不会起作用,因为程序除了监听之外什么都做不了。在
import socket
class SimpleSock:
def __init__(self, ip=None, port=None):
if ip == None or port == None:
print("SimpleSock cannot init without an ip and port")
else:
self.ip = ip
self.port = port
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("attempting connection to " + self.ip + " on port " + str(self.port))
self.socket.bind((self.ip, self.port))
self.socket.listen(5)
print("connected")
while True:
(clientsocket, address) = self.socket.accept()
#do something
如何编写一个没有无限循环的listen?我需要使用线程吗?在
可以使用Python Twisted或Tornado等框架来构建Python中的事件驱动网络应用程序。您可以在另一个问题中看到比较:When to use Tornado, when to use Twisted / Cyclone / GEvent / other
总的想法是,框架将允许您在事件发生时注册回调,比如等待套接字的数据,并且框架通常是您的“主循环”(因此它通常接管主线程的控制权)。大多数情况下,只要所有的事件源都可以使用select()或类似的方法等待,那么在一个线程中就不需要线程了。在
相关问题 更多 >
编程相关推荐