Я пишу сетевую гадательную игру, и я мог бы немного помочь с ней. Помимо обработки нескольких клиентов, моему серверу необходимо принять соединение с клиентом администратора. Клиент Admin отображает список IP-адресов и номеров портов клиентов-клиентов, подключенных к серверу. Я понимаю, что для этого нужно реализовать потоки.python threading Guessing game
Вот мой код. Я не уверен, сколько потоков необходимо и как передать информацию подключенных клиентов клиента в поток.
#Server
import threading
import socket
import math
import random
import ssl
def within(guess,goal,n):
absValue = abs(guess - goal)
if absValue <= n:
return True
else:
return False
#def HandleAdmin(adminSocket):
#(conn,addr) = adminSocket.accept()
#ts = ssl.wrap_socket(conn, certfile="5cc515_server.crt",
#keyfile="5cc515_server.key",
#server_side=True,
#cert_reqs=ssl.CERT_REQUIRED,
#ca_certs="5cc515-root-ca.cer")
#if ts.recv(80).decode() == 'Hello\r\n':
#ts.send('Admin-Greetings\r\n'.encode())
#if ts.recv(80).decode() == 'Who\r\n':
#ts.send((c,a).encode())
#ts.close()
#return
def HandleClient(c,a):
scoreCount = 0
guess = 0
if(c.recv(80).decode()) == 'Hello\r\n':
c.send('Greetings\r\n'.encode())
goal = random.randrange(1,21)
while guess!= goal:
guess =c.recv(80).decode()
guess = int(guess[7:len(guess)-2])
if guess == goal:
c.send('Correct\r\n'.encode())
elif within(guess, goal, 2) == True:
c.send('Close\r\n'.encode())
else:
c.send('Far\r\n'.encode())
c.close()
return
clientSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clientSocket.bind(("127.0.0.1",4000))
clientSocket.listen(5)
adminSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
adminSocket.bind(("127.0.0.1",4001))
adminSocket.listen(5)
while True:
(c,a) = clientSocket.accept()
#handleAdminThread = threading.Thread(target = AcceptAdminConnection,
# args = adminSocket)
clientThread = threading.Thread(target = HandleClient, args = (c,a))
clientThread.start()
Спасибо, чувак. Я постараюсь понять это и работать с ним завтра. Это может быть немного сложным для моих плохих навыков программирования hehe – Pete
Мне очень жаль, что я не был таким умным, как вы, ребята, но я понятия не имею, как работает этот код. Я прошу прощения. Большое вам спасибо за ваше время. – Pete
Если вы можете дать нам весь код и рассказать нам, что вы не понимаете, мы могли бы вам помочь. – Rbtnk