Может быть просто конвертировать одного клиента в несколько клиентов. Это зависит от того, как вы написали свое заявление. Поскольку вы переписываете приложение, которое было написано много раз раньше, я предполагаю, что вы не боитесь переписывать код и делаете это как учебное упражнение.
Самое простое изменение состоит в том, что там, где вы принимаете () одного клиента сейчас, вы должны использовать цикл для приема многих клиентов. (и передать обработку этого клиента другому потоку).
Для передачи файла через сокет вам необходимо иметь возможность подключиться к серверу, как вы это делаете сейчас, прочитайте файл и отправьте содержимое на сервер. Вместо того, чтобы передавать текстовые сообщения чата получателю, вы передаете сообщение с содержимым файла.