Stack Overflow на русском Asked by Ghost on December 18, 2020
Хочу создать простой консольный чат в одной сети Wi-Fi без подключения к интернету. Как это можно сделать? Что нужно загуглить?
Как вариант можно:
Остается определиться с типом чата тет-а-тет или широковещательная рассылка всем пользователям.
Историю можно хранить у каждого клиенты в txt с временными маркерами и при коннекте синхронизировать или забить на нее и получать только текущие сообщения.
И тд. и тп. алгоритм можно улучшать разными фичами очень долго зависит от желания замарочиться.
Answered by Kers on December 18, 2020
Консольный локальный чат можно реализовать без сервера, сокетов и других библиотек. Это будет достаточно костыльный чат, но тем не менее работать будет как надо)
Как один из вариантов, вам понадобятся:
Конечно, такой чат не позволит синхронизировать пользователей, т.е. в один чат одновременно сможет зайти хоть 10 человек с одинаковым ником и с одного компа. (хотя при желании и эту проблему можно решить)
Примерный алгоритм:
Главный файл чата: при первом запуске подгружает весь текст из файла с историей чата. Если текст в файле с последним сообщением изменился, значит было отправлено новое сообщение. Следовательно, при изменении текста в файле с последним сообщением - отображаем новое сообщение.
Консоль отправки: запрашивает логин для входа, после ввода в файл с последним сообщением записывается строка о том что такой-то пользователь заходит в чат и соответственно отображается в чате. Затем в цикле консоль запрашивает ввод через input('Сообщение>')
и при каждом вводе отправляет текст в файл с последним сообщением. Выход из чата можно реализовать просто через закрытие окна консоли. Обработать это закрытие можно с помощью библиотеки win32api
. То есть, при закрытии окна консоли отправки сообщений, если пользователь вводил ник и "авторизовался" в чате, будет выведено сообщение о том, что он покинул чат.
Разумеется, можно попытаться совместить главное окно и консоль отправки в одно окно, но я предложил самый простой вариант. Также подключив какую-нибудь шифрующую библиотеку (либо написать свой скрипт), можно шифровать данные, например, в файле истории.
Надеюсь вам поможет моя идея, удачи :)
Answered by denisnumb on December 18, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP