带线程的Python套接字编程

时间:2015-09-14 13:15:25

标签: python multithreading sockets

我是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()。但不确定如何?请帮忙。

1 个答案:

答案 0 :(得分:0)

在关闭套接字之前,您必须加入线程 目前,您只需启动5个线程并立即关闭服务器套接字 加入只会等到clientthread返回。

Python threading page

  

加入([超时])
  等到线程终止。这将阻塞调用线程,直到调用join()方法的线程终止 - 正常或通过未处理的异常 - 或直到可选的超时发生。