Я использовал python 3 для написания сервера forking, который будет принимать множество клиентов (я не установил предел количества клиентов). Каждому клиенту будет присвоено значение индекса на сервере в порядке их соединения с сервером. например, 1-й клиент будет называться КЛИЕНТОМ 1, затем вторым является КЛИЕНТ 2 и т. д.forking server in python
Но проблема в том, что этот индекс не назначается клиентам правильно. Пожалуйста, помогите мне за это. Я посылаю код питона для сервера и клиента, а также образцов продукции
Для сервера код
import os, socket
host="127.0.0.1"
port=7000
s=socket.socket()
s.bind((host, port))
s.listen(10)
def handle_client(s, addr, i):
while True:
data=s.recv(1024)
decoded_data=data.decode("utf-8")
if not decoded_data:
print("\nconnection with client " + str(i) + " broken\n")
break
print(" CLIENT " + str(i) + " -> " + decoded_data)
def server():
i=1
while i<=10:
c, addr=s.accept()
child_pid=os.fork()
if child_pid==0:
print("\nconnection successful with client " + str(i) + str(addr) + "\n")
handle_client(c, addr, i)
else:
i+=1
server()
Для клиента код
import socket
def client():
host="127.0.0.1"
port=7000
s=socket.socket()
s.connect((host, port))
msg=str(input("\n -> "))
encoded_msg=bytes(msg, "utf-8")
while msg!='q':
s.send(encoded_msg)
msg=str(input("\n -> "))
encoded_msg=bytes(msg, "utf-8")
client()
Теперь я открываю 2 терминала и запустите сервер в одном и в другом терминале. Я запускаю клиентов один за другим.
Терминал, в котором я запускаю клиентов, выглядит следующим образом:
[email protected]:~/Documents/programs/python/network$ python3 forking_chat_client.py
-> hii
-> q
[email protected]:~/Documents/programs/python/network$ python3 forking_chat_client.py
-> hello
-> q
[email protected]:~/Documents/programs/python/network$ python3 forking_chat_client.py
-> hii how are you???
-> q
[email protected]:~/Documents/programs/python/network$ python3 forking_chat_client.py
-> good day
-> q
[email protected]:~/Documents/programs/python/network$
терминал, в котором сервер работает, как это
[email protected]:~/Documents/programs/python/network$ python3 forking_chat_server.py
connection successful with client 1('127.0.0.1', 50362)
CLIENT 1 -> hii
connection with client 1 broken
connection successful with client 2('127.0.0.1', 50363)
CLIENT 2 -> hello
connection with client 2 broken
connection successful with client 1('127.0.0.1', 50364)
CLIENT 1 -> hii how are you???
connection with client 1 broken
connection successful with client 3('127.0.0.1', 50365)
CLIENT 3 -> good day
connection with client 3 broken
Как вы можете видеть в терминале сервера индекс 1 присваивается двум клиентам-1 и один 3-один. Как это произошло? Какая ошибка в моем коде? Пожалуйста, помогите мне
спасибо сэр –