Я пытаюсь создать программу локальной сети, используя python (который позже может быть в c) и TCP-сокетах.Объединение сервера и клиентского сокета python
Мое намерение состоит в том, чтобы сервер прослушивал текущий адрес компьютера для входящих сообщений и передавал их клиенту (как я еще не уверен). Клиент будет простым gui, который может отправлять сообщения на активные серверы по локальным соединениям. По сути, эта настройка создаст что-то из узловой сети.
Возможно ли иметь сервер и клиент в одном приложении, предпочтительно без использования потоков? Я знаю, что сервер приостанавливается при прослушивании соединения, поэтому gui не может ответить.
Если я не могу иметь оба приложения в одном приложении, я думал о наличии двух приложений, которые обмениваются данными друг с другом, однако потоки кажутся более подходящими, поскольку я буду использовать 2 процесса в любом случае. Если бы у меня были отдельные приложения, как я мог отправлять строки клиенту с сервера, чтобы обновить gui?
Могу ли я сделать какое-то событие (на стороне клиента), которое возникает, когда сервер хочет отправить сообщение клиенту?
Кроме того, как я могу проверить, активен ли сервер (доступен и привязан к его компьютерному адресу, ожидая сообщения)?
Является ли модель отношений между сервером и клиентом разумной? Какие-либо предложения?
Я проверил похожие вопросы сокетов при переполнении стека, но не нашел каких-либо конкретных вопросов по моей проблеме. Возможно, я пропустил некоторые, поэтому, пожалуйста, перенаправьте мое внимание на них, если они будут найдены соответствующими.
Этот вопрос кажется очень похожим: Python socket server: listening to multiple clients, однако у них, похоже, нет клиента «server» & для каждого.
Примечание: я новичок в сокетах & сетей.
У меня есть также googled сокеты, однако я не знаю, как обращаться с ними как открытыми для соединений, так и с помощью операций gui (для отправки). Я намерен использовать сервер и клиентскую сторону для приложения, потому что, если у меня есть один сервер, компьютер, запускающий его, может спать, уходить и т. Д., Поэтому некоторым клиентам придется взять на себя ответственность. Можете ли вы разработать или предоставить ссылку на неблокирующий режим? (это используется .select()?) – Ben
Я загляну в асинчио, спасибо за информацию. – Ben
"это использование .select()?". Да: select(), poll(), epoll() и т. Д. – KromviellBlack