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