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



포트 하나로 여러개의 클라이언트를 받고 싶었는데,

이렇게 코딩하니,

기존에 첫번째 쓰레드와 물려있던 클라이언트가 두번째 쓰레드와 물려버리고, 두번째 클라이언트는 연결이 되질 않는 현상이 일어났다.


그냥 소켓하나를 만들고, 아이피와 매칭시키는 방법을 사용해봐야겠다.