python线程,管理员和客户端

时间:2016-11-16 14:48:59

标签: python multithreading

我一直在这个项目上做一些开发。实现客户端到服务器的多个连接。但是我现在正尝试通过不同的端口号实现管理连接。哪个不会与客户的操作发生冲突。我更改了它,以便它调用函数,然后调用操作,然后客户端或管理员将对其进行游戏或管理控制。如何调用该函数的端口号,以便运行该代码?它调用游戏或管理控件? (新编码)然而我觉得我需要在脚本底部调用它们....

`# Server
  import socket
  import math
  import random
  import re
  import threading

 #TCP_IP = '127.0.0.1'
 #TCP_PORT = 4001
 #s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 #s.bind((TCP_IP, TCP_PORT))
 #s.listen(5)
 #print("Waiting...")
 #connection check


 def handle_ClientPort(port): # porting for client through threading
    s.bind(("127.0.0.1",port))
    s.listen(5)
    while True:
        (c,a) = s.accept()
        t = threading.Thread(target = handle_client, args = (c,a))
        t.start()


def handle_AdminPort(port): #proting for adminm connection through threading
    s.bind(("127.0.0.1",port))
    s.listen(5)
    while True:
        (c,a) = s.accept()
        t = threading.Thread(target = Admin_client, args = (c,a))
        t.start()



def handle_Admin(c,a): #function for admin controls
    while True:
            text = c.recv(80).decode()

            if text == 'Who':
                    c.send("who has workd".encode()) 

            elif text == 'Hello':
                    c.send('Admin-Greetings'.encode())
            else:
                  c.send('please use the correct admin commands'.encode())
            return

def handle_client(c,a): #This works(game)

    def within(vaule,goal,n):
            if abs(goal - vaule)<= n:
                return True
            else:
                return False
    while True:
            rmd = random.randrange(0,30)
            print('The random number is',rmd) # radom number

            hello = c.recv(78).decode()

            if hello == "Hello\r\n":
                    c.send('Greetings\r\n'.encode())
            else:       
                    c.send('ERROR\r\n'.encode())
            game = c.recv(80).decode()

            if game == "Game\r\n":
                    c.send('Ready\r\n'.encode())

            else:
                    c.send('ERROR\r\n'.encode()) # change this

            # hand shake communcation works


            while True:
                    geuss = re.findall('\d+',c.recv(80).decode())
                    print(geuss)
                    geuss1 = int(''.join(map(str,geuss)))
                    print(geuss1)
                    checker = within(geuss1,rmd,2)

                    if geuss1 == rmd:
                        c.send("Correct\r\n".encode())
                        c.close()
                        return
                    elif checker == True:
                        c.send("Close\r\n".encode())
                    else:
                        c.send("Far\r\n".encode())

    c.close()
    return





admin = 4001
client = 4000


#s = socket.socket(socket.AF_INET, socket.SOCK_STREAM,)
#s = socket.socket(socket.AF_INET, socket.SOCK_STREAM,)

0 个答案:

没有答案