Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 02.02.2023
Сообщений: 3

Не пойму что такое заблокированный разблокированный сокет

09.03.2023, 17:25. Показов 2494. Ответов 1

Студворк — интернет-сервис помощи студентам
Здраствуйте, подскажите в чём ошибка моего кода\мыслей

Суть задачи: Напишите программу (клиентскую и серверную часть), позволяющую
общаться пользователям внутри локальной сети. Используйте при этом протокол TCP.

Я хотел задачу решить так - подключаются три клиента на сервер, если код проходит через нужное условие сообщение от первого клиента доходят до двух других, для этого сокеты клиентов должны быть не заблокированными после подключения правильно?

Но мне выдаёт ошибку "BlockingIOError: [WinError 10035] Операция на незаблокированном сокете не может быть завершена немедленно"

Вот код сервера который и выдаёт ошибку:
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
30
31
32
import socket
import select
 
HEADER_LENGTH = 100
HOST = ('127.0.0.1', 8883)
 
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(HOST)
server.listen()
print("Сервер ожидает подключения")
 
server_list = [server]
output = [server]
client_list_msg = {}
 
while True:
    client, adress = server.accept()
    client.setblocking(False)
    server_list.append(client)
    if client not in output:
        output.append(client)
    client_list_msg[client] = client.recv(1024)
    print(f'Подключение с {adress}')
    server_input, clients_output, excep = select.select(server_list, output, server_list)
    for conn in server_input:
        if conn is not client:
            for all_clt in clients_output:
                all_clt.send(сlient.recv(1024))
                print("Всем клиентам сообщение отправлено")
        else:
            print('Ошибка')
Код клиента:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import socket
import sys
 
HEADER = 10
SERVER = ('127.0.0.1', 8883)
 
def client_run():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(SERVER)
    s.setblocking(False)
    while True:
        try:
            receivet = s.recv(1024)
            print(f'Ответ от сервера {receivet.decode("utf-8")}')
        except BlockingIOError:
            print("Socket is blocked, please try again later")
 
client_run()
До этого с сокетами не работал поэтому пожалуйста если напишете объяснение то сделайте его будто для тупого друга писали, начал не так давно и пока плохо понимаю, всем добра.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.03.2023, 17:25
Ответы с готовыми решениями:

Что такое сокет
1. Что такое сокет? 2. Как программировать с использованием сокетов?

Что такое сокет?
Добрый вечер! Разложите, пожалуйста, по полочкам без посторонних ссылок, что такое сокет в сетях? Не хватает глубинного смысла. Спасибо.

Вехнее меню сайта-не пойму что такое:)
Всем привет и спасибо за помощь! Решил заморочиться и попробовать создать верхнее меню для сайта. Вроде все легко, но один момент не...

1
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
12.03.2023, 08:19
LisovozkaAlo, видимо реализация сделана так что если для recv нет данных во входящем буфере, то он выбрасывает это исключение. нужно в начале проверить наличие данных
Python
1
2
3
4
        sockets = [s]
        rlist, wlist, xlist = select.select(sockets, sockets, sockets, 5)
        if s in rlist:
            data = s.recv(1024)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2023, 08:19
Помогаю со студенческими работами здесь

Что такое "сокет"? Посоветуйте литературу
Сокет - название программного интерфейса для обеспечения обмена данными между процессами, что то вроде управления протоколом ? и...

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое IIS и что такое PWS? Почему одно без другого не работает?
вот уже второй день пытаюсь немного разобраться в АСП. накидал небольшую тестовую страничку. но с серверами я ничего не понимаю! что...

Что такое напряжение и что такое сила тока с позиции заряженных частиц
Объясните пожалуйста, что такое напряжение и что такое сила тока с позиции заряженных частиц. Например, имеется проводник в цепи, чем...

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru