1 def dedicated_server():
10 log("Getting clients...")
12 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
13 s.bind(("0.0.0.0", 4562))
17 log("Got white player")
19 args = ["python", "qchess.py", "--no-graphics", "@network::"+str(4600+2*len(games)), "@network::"+str(4600+2*len(games))]
20 if len(log_files) != 0:
25 args.append("--log="+str(l.name)+"_"+str(gameID))
27 g = subprocess.Popen(args, stdout=subprocess.PIPE)
31 ss[0].send("white " + str(4600 + 2*(len(games)-1)))
32 ss[0].shutdown(socket.SHUT_RD)
38 log("Got black player")
41 ss[0].send("black " + str(4600 + 2*(len(games)-1)))
42 ss[0].shutdown(socket.SHUT_RD)
45 s.shutdown(socket.SHUT_RDWR)
49 while len(games) > max_games:
50 #log("Too many games; waiting for game to finish...")
51 ready = select.select(map(lambda e : e.stdout, games),[], [])
53 s = r.readline().strip(" \r\n").split(" ")
54 if s[0] == "white" or s[0] == "black":
57 log("Game " + str(g) + " has finished")
62 def client(addr, player="@human"):
67 s.connect((addr, 4562))
69 [colour,port] = s.recv(1024).strip(" \r\n").split(" ")
71 #debug("Colour: " + colour + ", port: " + port)
73 s.shutdown(socket.SHUT_RDWR)
77 p = subprocess.Popen(["python", "qchess.py", player, "@network:"+addr+":"+port])
79 p = subprocess.Popen(["python", "qchess.py", "@network:"+addr+":"+port, player])