Np to ,że kod jest taki dziwny nie pythonowy. Nie ma takiego control flow jak normalny pythonowy kod. Np funkcja select albo fork. z exec. W tym przykładzie co dałem wcześniej , gdyby nie os.execlp . to normalny kod powinien nastawiać perm na zero.
Albo w tym przykładzie co dałem teraz z select(). Jak
for ma przeszukiwać nad readables gdy socket staje się gotowy gdy odbierze połączenie za pomocą accept() który jest przecież wcięty w for ?
# event loop: listen and multiplex until server process killed
print('select-server loop starting')
while True:
readables, writeables, exceptions = select(readsocks, writesocks, [])
for sockobj in readables:
print(readables)
if sockobj in mainsocks:
newsock, address = sockobj.accept()
print('Connect:', address, id(newsock))
readsocks.append(newsock)
else:
data = sockobj.recv(1024)
print('\tgot', data, 'on', id(sockobj))
print('\tgot', data, 'on', id(sockobj))
if not data:
sockobj.close()
readsocks.remove(sockobj)
else:
reply = 'Echo=>%s at %s' % (data, now())
sockobj.send(reply.encode())