Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 25.02.2021
Сообщений: 2

Чат сервер/клиент

25.02.2021, 14:05. Показов 4787. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста, мой сервер перестал отправлять сообщения клиенту, либо клиент не принимает сообщения сервера. Голову ломаю уже второй день. Так произошло после ввода XOR шифрования, вот код
Сервер
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import socket
 
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind (('192.168.0.103',5040))
key = 2848 #Ключ шифрования
client = [] #Массив адресов клиентов
print ('Сервер запущен и готов к работе')
 
def xor_cipher(data, key):
    encript_message = ""
    for letter in data:
        encript_message += chr(ord(letter) ^ key)
    return encript_message
 
while 1:
         data, adress = sock.recvfrom(10240)
         data=data.decode('utf-8')
         data=xor_cipher(data,key)
         print(adress[0], adress[1], data)
         data = xor_cipher(data, key)
         if adress not in client:
                 client.append(adress)
         for clients in client:
                 if clients == adress:
                     continue
                     sock.sendto(data.encode('utf-8'),clients)
Клиент
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import socket
import threading
 
def xor_cipher(message, key):
    encript_message = ""
    for letter in message:
        encript_message += chr(ord(letter) ^ key)
    return encript_message
 
def read_sok():
     while 1:
         data = soc.recv(10240)
         data=data.decode('utf-8')
         data = xor_cipher(data,key)
         print(data)
 
server = '192.168.0.103', 5040  #Данные сервера
key = 2848 #Ключ шифрования
print('Введите свой никнейм:')
nickname = input() #Никнейм для общения
soc = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
soc.bind(('', 0)) #Задаем сокет как клиент
soc.sendto(xor_cipher((nickname+' подключился к чату'),key).encode('utf-8'), server)#Уведомляем чат о подключении
thread = threading.Thread(target=read_sok)
thread.start()
while 1:
    message = input()
    cripted_message=xor_cipher('['+nickname+'] '+message,key)
    soc.sendto(cripted_message.encode('utf-8'), server)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.02.2021, 14:05
Ответы с готовыми решениями:

Первый и самый примитивный сервер и первый клиент POST запросов
Добрый вечер. Помогите, пожалуйста со следующей проблемой. Мне необходимо написать на питоне сервер и клиент для обработки POST...

http клиент и http сервер на Python
Клиент должен уметь кидать запросы на сервер с адресом http://127.0.0.1:{port}/{method} , где port – целое число, приходит первой строкой...

Клиент-Чат
Здравствуйте дорогие пользователи.У меня проблема-мне нужно чтобы программа спрашивала а затем в сообщениях отображала имя пользователя.И...

3
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
25.02.2021, 14:10
Запустил, сервер получает сообщения от клиента "172.16.4.57 53027 RSAX подключился к чату" или что именно он не получает?
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
25.02.2021, 14:11
Лучший ответ Сообщение было отмечено Zhenevsky как решение

Решение

Цитата Сообщение от Zhenevsky Посмотреть сообщение
Python
1
2
3
if clients == adress:
    continue
    sock.sendto(data.encode('utf-8'),clients)
Зачем?
0
0 / 0 / 0
Регистрация: 25.02.2021
Сообщений: 2
25.02.2021, 14:22  [ТС]
Если два клиента запустить, как два человека к примеру, то в каждом клиенте должно выводиться сообщение, но в своем клиенте свое сообщение не присылается

Добавлено через 1 минуту
Это чтобы свое сообщение себе не отправлялось, удалил if и continue, заработало, но теперь сообщение самому себе выводит с никнеймом.

Добавлено через 2 минуты
Спасибо большое, косяк со сдвигом был, вообще не замечал второй час!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.02.2021, 14:22
Помогаю со студенческими работами здесь

Чат: сообщение, которое напечатал клиент отображать не только на сервере, но и у другого клиента
Хотел бы попросить небольшой помощи, я пытаюсь создать небольшой чат на python, но у мя есть небольшая проблема, как сделать чтобы...

Клиент - Сервер
Добрый день. Есть элементарный клиент и сервер: Клиент HOST = 'х.х.х.х' PORT = хххх s =...

Сервер-клиент
Нужно написать многопользовательский сервер. Сервер и клиент должны иметь возможность в любое время обменяться информацией. Клиент ее...

Клиент-сервер на сокетах
Задача стоит в написании некого подобия чата. Получение на сервер работает, но хотелось бы сделать возможность обмена сообщениями...

Клиент сервер на питоне
РЕБЯЯЯЯТ СРОЧНО ПОМОГИТЕ, ПОЖАЛУЙСТА.. завтра зачёт, надо практику сдать, заданий куча , времени мало.. ВАРИАНТ ЗАДАНИЯ . В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru