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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | #-*-coding:utf-8-*- from socket import * import sys from os import system if(len(sys.argv) < 2): print "ARGV Error!" print "Usage : %s [PORT]" % sys.argv[0] exit() # socket define HOST = '' PORT = int(sys.argv[1]) ADDR = (HOST,PORT) class person: def __init__(self,x,y): self.x = x self.y = y def add_user(self,ip): self.ip = ip def draw_map(user): mapping = { 0:"A", 1:"B", 2:"C", 3:"D", 4:"E", 5:"F", 6:"-" } system("clear") for i in range(0,10): for j in range(0,10): sys.stdout.write(mapping.get(check_user(user,j,i))) sys.stdout.write(" ") continue print "" def check_user(user,x,y): for i in range(0,6): if(user[i].x == x and user[i].y == y): return i return 6 def make_user(): user = [0]*6 for i in range(0,6): user[i] = person(0,0) return user def where_user(user): for i in range(0,6): print "x=" + str(user[i].x) + " y=" + str(user[i].y) def set_locate(user): for i in range(0,3): user[i].y=i user[i+3].y=i for i in range(3,6): user[i].x=9 return user def move_user(user): user[0].x = 5 return user def make_socket(port): #edit here s=socket(AF_INET,SOCK_STREAM) s.bind(("localhost",port)) s.listen(1) connect,address = s.accept() if __name__ == '__main__': # make user object user=make_user() # set user x,y user=set_locate(user) # print user's x,y where_user(user) # print map draw_map(user) # make socket s=make_socket() # move user locate user = move_user(user) # print map draw_map(user) """ 소켓으로 입력대기를 받음 HELLO 가 날아오면 무작위 포트로 소켓을 만들고 그 포트번호로 클라이언트를 다시 연결하게끔 해야 할듯. (다른 유저가 무단으로 조작하지 못하게) 유저 입력 후 캐릭터 이동은 쓰레드를 사용해서 처리. 동시에 이동하면 오류가 일어날지도 모르니 좌표 수정때는 플래그 변수를 하나 둬서 동시 수정을 막음. """ | cs |
기존에 C언어로 처리하던 서버를 파이썬으로 개발해 보았다.
확실히 생산성이 좋아서 인지 진도가 빠름.
하지만 아직 객체 처리에는 미숙한 면이 있어 많이 해봐야 할 듯
'Python' 카테고리의 다른 글
scapy 이용 arp 패킷 보내기. (0) | 2015.05.01 |
---|---|
네이버 실시간 검색어 파싱 (0) | 2015.04.28 |
쓰레드를 이용한 소켓 (0) | 2015.04.27 |
scapy - 패킷 제작 (0) | 2015.04.27 |
파이썬 포트 스캐너 (0) | 2015.04.26 |