У меня есть клиентская программа, но она генерирует только одного клиента, но я хотел бы смоделировать несколько клиентов, таких как более 100-1000, по крайней мере, разных портов, используя python. Я не уверен, как это сделать. Пожалуйста, дайте идею.
Обновление:
Я пытался использовать localhost для тестирования, и я мог отправлять запросы с другого порта. Но цикл, который я пробовал для 100 клиентов, похоже, не работает. Есть идеи, что не так?
def con_server(Host,port):
sock = socket(AF_INET, SOCK_DGRAM)
host='localhost'
for p in range(5000,5100): -> I always get 5099 port connection in server side.
por =p
ad=(host,por)
sock.bind(ad)
address=(Host,port)
sock.sendto("connection".encode(),address)
data,server=sock.recvfrom(4096)
data=data.decode()
print('Client:' +data)
if __name__=="__main__":
t2=threading.Thread(target=con_server,name='con_servr',args=("192.168.1.cc,4242))
t2.start()
t2.join()
Я хотел бы смоделировать больше клиентов с одной машины.
Отредактировано:
import socket
import select
def create_socket(UDP_PORT):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(("localhost",UDP_PORT))
return server_socket
def main():
read_list=[]
for UDP_PORT in range(5000,5010):
read_list.append(create_socket(UDP_PORT))
while True:
server_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
host="localhost"
port=4242
address=(host,port)
server_socket.sendto("connection".encode(), address)
data, server = server_socket.recvfrom(4096)
data = data.decode()
print('Client:' + data)
if __name__=="__main__":
main()
Я пытался изменить код, но проблема в том, что сервер принимает бесконечное количество портов. Но я хотел, чтобы он принимал только от 5000 до 5010. Может кто-нибудь сказать мне, что не так с моим кодом.