Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Сокеты перестают работать


Автор: LowC 14.1.2012, 08:14
Уже много времени убил на решение проблемы, но так и не понял, почему сокеты отказываются работать после большого кол-ва переподключений.
Подключение происходит, собсно, в цикле и все происходит макс быстро.
Если код запустить на Вин 7, то ОСь у меня падает под бсодом.
На никсах работает, но до ~24к переподключений, после - все, сколько не тормоши, программа будет висеть на recv(), как сделаешь переподключение к интернету, то все работает снова О_о
Решил попробовать на С++ - вин 7, запустил, через пару секунд тот же бсод.
Что не так то? Почему такие странные реакции, на большое кол-во переподключений?

Код

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);

try:
    s.connect((url, 80));
    s.send(rqs);

    buff = s.recv(4096);

    while(buff): 
        data+= buff;
        buff = s.recv(4096);

finally:
    s.close();    

Автор: bilbobagginz 28.1.2012, 01:23
Цитата(LowC @  14.1.2012,  07:14 Найти цитируемый пост)
Что не так то? Почему такие странные реакции, на большое кол-во переподключений?

попробуй проанализировать как ведет себя система:
1) растет ли количество сокетов ОС в процессе запуска программы
2) как идет ситуация с памятью.

Автор: LowC 1.2.2012, 16:03
Ок, над будет глянуть.
Кстати, забыл сказать: даже если на виртуалке запустить код на Python, (Win XP под Win 7), то все накрывается бсодом, комп уплывает в ребут.
У никсов, пока оно висит на recv(), жмешь дисконект, потом снова конект и оно продолжает выкачивать данные - никс хитрожопен )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)