我是python中使用线程进行套接字编程的新手。我有一个简单的服务器应用程序:
#!/usr/bin/python
from socket import *
from threading import Thread
import _thread
host = ''
port = 52000
sock = socket()
sock.bind((host, port))
sock.listen(5)
print "server is waiting for connections.."
def clientthread():
conn, addr = sock.accept()
print addr, "is connected"
conn.send('Hi! I am server\n') #send only takes string
#Receiving from client
data = conn.recv(1024)
print data
for num in range(5):
Thread(target = clientthread).start()
sock.close()
这个简单的代码适用于5个客户端,然后当一个注销并且新的一个希望与服务器联系时,应用程序就会关闭。但我想要的是拥有5个同时连接,并且一旦有人注销,就会重新创建一个客户端空间以容纳新的客户端空间(即当前第5个)。我相信线程模块可以帮助我。其功能如acquire()
和release()
。但不确定如何?请帮忙。
答案 0 :(得分:0)
在关闭套接字之前,您必须加入线程
目前,您只需启动5个线程并立即关闭服务器套接字
加入只会等到clientthread
返回。
加入([超时])
等到线程终止。这将阻塞调用线程,直到调用join()方法的线程终止 - 正常或通过未处理的异常 - 或直到可选的超时发生。