[Бонусное] Сделать сервер асинхронным
Попробуем теперь еще улучшить наш сервер, сейчас он может обрабатывать только одно соединение. Если к сокету попробует подключится кто-то еще, то он встанет в очередь и будет ждать пока прекратит общение предыдущий собеседник.
На самом деле такой подход применяется и в жизни. Просто клиент не держит соединение вечно, а делает запрос, дожидается ответа и разрывает коннект. Чтобы обеспечить параллельность разворачивают несколько копий приложения, поверх которых работает прокси сервер, который равномерно распределяет запросы к серверу по всем запущеным копиям.
Но у нас то всего один файлик и прокси сервера нет, а хочется чтобы можно было обслуживать сразу несколько коннектов.
Для этого воспользуемся возможностью писать асинхронные штуки в C#
Я пока не успел тут дописать методичку, так что пока можете потыкать сами =)