-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathETTTP_Client.py
50 lines (35 loc) · 1.49 KB
/
ETTTP_Client.py
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
import random
import tkinter as tk
from socket import *
import _thread
from ETTTP_TicTacToe import TTT, check_msg
if __name__ == '__main__':
SERVER_IP = '127.0.0.1'
MY_IP = '127.0.0.1'
SERVER_PORT = 12000
SIZE = 1024
SERVER_ADDR = (SERVER_IP, SERVER_PORT) # (127.0.0.1, 12000)
with socket(AF_INET, SOCK_STREAM) as client_socket:
client_socket.connect(SERVER_ADDR)
# 서버로부터 누가 먼저 시작할지 메시지 받음
recv_msg = client_socket.recv(SIZE).decode()
if check_msg(recv_msg, SERVER_IP): # ETTTP format인지 검사
line_num = recv_msg.split('\r\n')
first_player = line_num[2].split(':')[1]
if first_player == 'YOU':
start = 1 # client가 게임 시작
else:
start = 0 # server가 게임 시작
# ACK 전송
line_num = recv_msg.split('\r\n')
player = line_num[2].split(':')[1] # 서버가 보낸 메시지에서 YOU / ME 추출
ack_msg = 'ACK ETTTP/1.0\r\n'
ack_msg += f'Host:{SERVER_IP}\r\n'
ack_msg += f'First-Move:{player}\r\n'
ack_msg += '\r\n'
client_socket.send(ack_msg.encode())
# === game start ===
root = TTT(target_socket=client_socket, src_addr=MY_IP,dst_addr=SERVER_IP)
root.play(start_user=start)
root.mainloop()
client_socket.close()