본문 바로가기

Python

(Fail) 쓰레드를 이용한 소켓

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



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

이렇게 코딩하니,

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


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

'Python' 카테고리의 다른 글

게임서버 최종 소스  (0) 2015.05.08
쓰레드를 이용한 다중 클라이언트 소켓  (0) 2015.05.05
scapy 를 이용한 ARP 패킷  (0) 2015.05.02
scapy 이용 arp 패킷 보내기.  (0) 2015.05.01
네이버 실시간 검색어 파싱  (0) 2015.04.28