Я не могу найти способ уникальной идентификации каждого потока, который создается и хранится на сервере.Каждый клиентский поток должен хранить свою собственную информацию, которая используется для передачи информации обратно соответствующему клиенту.Очевидные детали для создания сервера опущены:
import sys
from threading import Thread
import socket
import traceback
def client_thread(conn, ip, port, MAX_BUFFER_SIZE = 4096):
while 1:
# the input is in bytes, so decode it
input_from_client_bytes = conn.recv(MAX_BUFFER_SIZE)
if not input_from_client_bytes:
break
# decode input and strip the end of line
input_from_client = input_from_client_bytes.decode("utf8").rstrip()
aString = ''
if (input_from_client.startswith('LOAD BOARD')):
array = input_from_client.split('~')
aString = array[1]
vysl = aString.encode("utf8") # encode the result string
conn.sendall(vysl) # send it to client
conn.close() # close connection
print('Connection ' + ip + ':' + port + " ended")
while True:
conn, addr = soc.accept()
ip, port = str(addr[0]), str(addr[1])
print('Accepting connection from ' + ip + ':' + port)
try:
Thread(target=client_thread, args=(conn, ip, port)).start()
except:
traceback.print_exc()
soc.close()
start_server()
Одно предложение, которое я прочитал, - это создать файл python, добавить туда все переменные и импортировать его на сервер, но все остальные потоки редактируют значения одинаково.время все станет странным.Каждый поток захочет использовать методы, которые будет предоставлять сервер.Поскольку данные не могут быть обменены между методом из одного класса и методом из другого, каков наилучший способ сделать это?