Вероятно, клиент 2 зависает из-за блокировки чтения данных в функции `inf()` при работе с клиентом 1.
Для избежания зависания при приеме информации в функции `inf()`, можно воспользоваться механизмом многопоточности или асинхронности.
Пример модифицированного скрипта с использованием многопоточности:
```python
import socket
import threading
def inf(client, addr):
while True:
data = client.recv(1024)
if not data:
break
print(f"Received data from {addr}: {data.decode()}")
print(f"Connection with {addr} closed")
def main():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 8888))
server_socket.listen(2)
while True:
client, addr = server_socket.accept()
print(f"Connected to {addr}")
thread = threading.Thread(target=inf, args=(client, addr))
thread.start()
if __name__ == "__main__":
main()
```
В данном примере каждое новое соединение обрабатывается в отдельном потоке, что позволяет избежать блокировки при работе с несколькими клиентами одновременно.
Если вы хотите использовать асинхронность, то можно воспользоваться библиотекой `asyncio`. Для этого необходимо модифицировать код соответствующим образом.