From 7a4c0cd917549fd492a0c7b5fa607eec8e0b9141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D1=81=D1=82=D1=80=D0=BE=D0=BC=D0=B8=D0=BD=20?= =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80?= Date: Wed, 4 Feb 2026 17:26:58 +0300 Subject: [PATCH] git --- .gitignore | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++ client.py | 26 +++++++ main.py | 43 +++++++++++ main3.py | 43 +++++++++++ 4 files changed, 328 insertions(+) create mode 100644 .gitignore create mode 100644 client.py create mode 100644 main3.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..64d49ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,216 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[codz] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py.cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +# Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +# poetry.lock +# poetry.toml + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. +# https://pdm-project.org/en/latest/usage/project/#working-with-version-control +# pdm.lock +# pdm.toml +.pdm-python +.pdm-build/ + +# pixi +# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control. +# pixi.lock +# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one +# in the .venv directory. It is recommended not to include this directory in version control. +.pixi + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# Redis +*.rdb +*.aof +*.pid + +# RabbitMQ +mnesia/ +rabbitmq/ +rabbitmq-data/ + +# ActiveMQ +activemq-data/ + +# SageMath parsed files +*.sage.py + +# Environments +.env +.envrc +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +# .idea/ + +# Abstra +# Abstra is an AI-powered process automation framework. +# Ignore directories containing user credentials, local state, and settings. +# Learn more at https://abstra.io/docs +.abstra/ + +# Visual Studio Code +# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore +# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore +# and can be added to the global gitignore or merged into this file. However, if you prefer, +# you could uncomment the following to ignore the entire vscode folder +# .vscode/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc + +# Marimo +marimo/_static/ +marimo/_lsp/ +__marimo__/ + +# Streamlit +.streamlit/secrets.toml \ No newline at end of file diff --git a/client.py b/client.py new file mode 100644 index 0000000..bf16c91 --- /dev/null +++ b/client.py @@ -0,0 +1,26 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +# Включаем возможность отправки broadcast сообщений +client.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + +# Используем broadcast адрес +# 255.255.255.255 - для всей локальной сети +# Или конкретный сетевой broadcast, например: 192.168.1.255 +BROADCAST_ADDR = '255.255.255.255' +PORT = 10001 + +message = b'Hello everyone! This is broadcast message!' +client.sendto(message, (BROADCAST_ADDR, PORT)) +print(f"Отправлено широковещательное сообщение на {BROADCAST_ADDR}:{PORT}") + +# Ждем ответы (если сервер отвечает) +client.settimeout(2) # Таймаут 2 секунды +try: + while True: + data, addr = client.recvfrom(1024) + print(f"Ответ от {addr}: {data.decode()}") +except socket.timeout: + print("Таймаут ожидания ответов") + +client.close() \ No newline at end of file diff --git a/main.py b/main.py index e69de29..abef8e0 100644 --- a/main.py +++ b/main.py @@ -0,0 +1,43 @@ +import socket +import time + +def broadcast_chat(): + + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + + + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + + sock.bind(('0.0.0.0', 10001)) + + while True: + + sock.settimeout(0.5) + try: + data, addr = sock.recvfrom(1024) + print(f"\n[Сообщение от {addr[0]}] {data.decode()}") + except socket.timeout: + pass + + + try: + + message = input("Ваше сообщение: ") + + if message.lower() == 'exit': + print("Выход из чата...") + break + + + sock.sendto(message.encode(), ('255.255.255.255', 10001)) + print(f"[Вы отправили] {message}") + + except KeyboardInterrupt: + print("\nВыход...") + break + + sock.close() + +if name == "main": + broadcast_chat() \ No newline at end of file diff --git a/main3.py b/main3.py new file mode 100644 index 0000000..0b800a8 --- /dev/null +++ b/main3.py @@ -0,0 +1,43 @@ +import socket +import time + +def broadcast_chat(): + + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + + + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + + sock.bind(('0.0.0.0', 10001)) + + while True: + + sock.settimeout(0.5) + try: + data, addr = sock.recvfrom(1024) + print(f"\n[Сообщение от {addr[0]}] {data.decode()}") + except socket.timeout: + pass + + + try: + + message = input("Ваше сообщение: ") + + if message.lower() == 'exit': + print("Выход из чата...") + break + + + sock.sendto(message.encode(), ('255.255.255.255', 10001)) + print(f"[Вы отправили] {message}") + + except KeyboardInterrupt: + print("\nВыход...") + break + + sock.close() + +if __name__ == "__main__": + broadcast_chat() \ No newline at end of file