Я успешно написал приложение чата клиент-сервер UDP, но мой способ обработки запросов и ответов хакерский и не очень масштабируемый. Сервер в основном прослушивает сообщения, приходящие в и затем запускает код, в зависимости от типа сообщения:Работа с несколькими различными запросами и ответами в программе чата-сервера-клиента
if command == "CONN":
# handle new connection from client then send "OK"
if command == "MSG":
# send message to other connected clients
...
Я доволен дизайном сервера, но клиент действительно неудобный.
Вот пример команд клиент может послать с сервера:
Command Name | Argument | Outcome/Description
------------------------------------------------------------------------------
CONN | username | OK, ERR, or timeout if server isn't running
MSG | message | -
USRS | - | ["username1", "username2"]
QUIT | - | -
И получить от сервера:
USRC | username | new user connected
USRD | username | user disconnected
MSG | username, message | print message from user
SHDW | - | server shut down
В основном у меня возникают проблемы создания системы, которая будет обрабатывать эти разные наборы команд и ответов. Я знаю, что у меня есть государственная машина рода и может осмыслять решение в моей голове, я просто не кажется, чтобы быть в состоянии перевести это ни к чему, кроме:
socket.send("CONN username")
if response == "OK":
# connected to the server ok
if response == "ERR":
# oops, there was a problem of sorts
# otherwise handle timeout
socket.send("USRS")
if response == "":
# no other users connected
else:
# print users
# start main listening loop
while True:
# send typed text as MSG
# handle any messages received from the server on separate thread
Любая оцененная помощь и приносим извинения за странные pseodocode python-esqe.