Python
(Fail) 쓰레드를 이용한 소켓
kcrong
2015. 5. 4. 06:10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | from socket import * from thread import * import time global thread_num thread_num=0 lock=allocate_lock() def accept_client(s,id_num): global thread_num lock.acquire() thread_num=thread_num+1 lock.release() while 1: print "Recv Wait!" print str(cnt) + "is alive!" get=conn.recv(1024) print get if get == "exit\n": s.close() lock.acquire() thread_num=thread_num-1 lock.release() s=socket(AF_INET,SOCK_STREAM) s.bind(("192.168.0.31",10102)) s.listen(1) cnt=0 while 1: cnt=cnt+1 print "Accept Waiting.." conn,addr = s.accept() print "Accept!" start_new_thread(accept_client,(conn,cnt)) while thread_num: time.sleep(1) | cs |
포트 하나로 여러개의 클라이언트를 받고 싶었는데,
이렇게 코딩하니,
기존에 첫번째 쓰레드와 물려있던 클라이언트가 두번째 쓰레드와 물려버리고, 두번째 클라이언트는 연결이 되질 않는 현상이 일어났다.
그냥 소켓하나를 만들고, 아이피와 매칭시키는 방법을 사용해봐야겠다.