【发布时间】:2013-12-27 11:57:46
【问题描述】:
我想创建一个允许在同一端口上发送和接收的类,并在程序执行操作时根据传入消息创建一个事件驱动的应用程序。我对套接字没有太多经验,所以我不知道该怎么做。这是我的 SimpleSock 类,到目前为止只是绑定了套接字。我还在那里放置了一个无限循环来监听连接,但我知道这对我想要的不起作用,因为除了监听之外程序将无法做任何事情。
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
如何在没有无限循环的情况下编写监听?我需要使用线程吗?
【问题讨论】:
-
是的,如果您的程序需要做的不仅仅是侦听套接字或想要同时处理大量客户端连接,线程将是一个好主意。您还可以使用进程(谷歌 python 多处理)而不是线程。
标签: python multithreading sockets