【发布时间】:2015-07-02 15:49:27
【问题描述】:
我正在使用 Python 2.6 和新的套接字和线程。
我需要编写一个套接字代码来列出某些端口。以下是我相关的套接字类:
class SocketServer(object):
"""
"""
def __init__(self, host, sock_port, buffsize=1024):
self.hostname = host
self.sock_port = sock_port
self.buffsize = buffsize
self.socket = None
def start(self):
print "Listening: "
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind((self.hostname, self.sock_port))
self.socket.listen(10)
while True:
conn, address = self.socket.accept()
thread.start_new_thread(handle_data, (conn, self.buffsize))
if __name__ == "__main__":
server = socketServer(ip, port)
try:
server.start()
except Exception as e:
print e
handle_data是监听相关端口的函数:
def handle_data(conn, buffsize):
while True:
try:
_veri = conn.recv(buffsize)
if not _veri:
break
except Exception as e:
break
# Do something else
conn.close()
一切正常,但是handle_data 有一些很长的代码,所以我想把它写成一个类。
第一个问题是,我可以把它写成一个类吗?其次,在套接字侦听中对类进行线程化与对函数进行线程化有任何缺点(相当大的内存使用差异等)?
【问题讨论】:
-
显然不是一个解决方案,但看看SocketServer 模块可能会有用:)
标签: python multithreading sockets python-2.6