import socket print("starting") # Server Side global servermapdata global playerlocations global playerid global port global mapdata0 global times import logging #import time #from datetime import datetime logging.basicConfig(filename='log.log', encoding='utf-8', level=logging.DEBUG,format='%(asctime)s:%(message)s') # datetime object containing current date and time #now = datetime.now() #print("now =", now) # dd/mm/YY H:M:S #dt_string = now.strftime("%d/%m/%Y %H:%M:%S") #print("date and time =", dt_string) logging.info("prototype server 3 start") times=[] playerid=[] playerlocations=[] mapdata0= [[1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1],#32 by 32 array for the map level 1 [0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0], [1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0], [0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0], [0,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0], [0,0,0,2,0,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0], [1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,3,0,0,0], [0,0,0,0,1,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0], [0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0], [1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1], [0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0], [0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1], [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1],] def messageresponce(msg): global playerid global playerlocations global mapdata0 global times if msg=="playerpingconnect":return "server online" if msg=="mapdata0": mapd=str(mapdata0) #print(mapd) return str(mapd) if msg=="playerid": playerident=len(playerid) playerid.append(playerident) logging.info(str("player joined with id "+str(playerident))) return str(playerident) if msg[0]=="x"and msg[1]=="s": msg = msg[2:] #print(msg) msg=msg.split(' ') playerco=msg[0] playeridentity=msg[1] playerlocations.append(playerco) #print(playerlocations) returnlist=playerlocations.copy() #print(returnlist) #print(int(playeridentity)) returnlist.pop(int(playeridentity)) return str(returnlist) if msg[0]=="x"and msg[1]=="y": #logging.info(str("player send location"+str(msg))) msg = msg[2:] msg=msg.split(' ') playerco=msg[0] playeridentity=msg[1] # print("playeridentity") #print(int(playeridentity)) #print(len(playerlocations)) playerlocations[int(playeridentity)]=playerco returnlist=playerlocations.copy() returnlist.pop(int(playeridentity)) return str(returnlist) if msg[0]=="s"and msg[1]=="c": msg = msg[2:] logging.info(str("player finnished "+msg)) print(msg) msg=msg.split(' ') times.append(msg) return str(times) if msg=="times": return str(times) else: return"???" #ip="192.168.1.27" #port=6666 #buffersize=1024 print(socket.gethostbyname(socket.gethostname())) port=int(input("port recomend 6666 or 8888")) #s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #s.bind((ip, port)) ip=socket.gethostbyname(socket.gethostname()) #while True: logging.info(str("started on"+str(ip)+":"+str(port))) # buffersize=4096 # # s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) # s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # s.bind((ip, port)) # s.listen(1) # (cl, adress) = s.accept() # msg=cl.recv(buffersize).decode() # msg=msg #print(" Received message is '{}'".format(msg)) # cl.send(messageresponce(msg).encode()) # s.close() # #cl.close() # import socket programming library # import thread module from _thread import * import threading print_lock = threading.Lock() # thread function def threaded(c): # data received from client msg = c.recv(4096).decode() # lock released on exit print_lock.release() # reverse the given string from client #data = data[::-1] # send back reversed string to client c.send(messageresponce(msg).encode()) # connection closed c.close() def Main(): global port host = "" s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((host, port)) print("socket binded to port", port) # put the socket into listening mode s.listen(5) print("socket is listening") # a forever loop until client wants to exit while True: # establish connection with client c, addr = s.accept() # lock acquired by client print_lock.acquire() #print('Connected to :', addr[0], ':', addr[1]) # Start a new thread and return its identifier start_new_thread(threaded, (c,)) s.close() if __name__ == '__main__': Main()