5 / 4 / 1
Регистрация: 16.08.2013
Сообщений: 110

на accept() зависает

11.12.2013, 16:06. Показов 10660. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, делаю чат на основе win socket в консольном варианте всё работает, делаю в оконном интерфейсе зависает на accept(). Помогите кто может
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2013, 16:06
Ответы с готовыми решениями:

Зависает accept windows forms
Как сделать что бы не зависало на accept или на другом зависает сам не пойму попробуйте сами протестировать давно не пойму #define...

После Socket.Accept() зависает приложение
После строки Socket.Accept() зависает приложение ,я знаю что этот метод останавливает выполнение кода пока он не выполнится ,как сделать...

accept
DWORD WINAPI ThreadNetworkAdminSystem(StructurNetworkAdminData &data) { StructurClientData *TmpClientData=new StructurClientData; ...

25
5 / 4 / 1
Регистрация: 16.08.2013
Сообщений: 110
13.12.2013, 22:58  [ТС]
Студворк — интернет-сервис помощи студентам
vxg, спасибо за разъяснения, только вот не понятно если создание сокета писать на кнопку, то где разместить таймер и обмен revc и send?

Добавлено через 1 минуту
Убежденный, может и Вы подскажите?)

Добавлено через 2 минуты
спасибо за разъяснения, но вот не понятно где разместить цикл с таймером и обмен данными?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
13.12.2013, 23:36
Цитата Сообщение от PanKiller Посмотреть сообщение

C++
1
ioctlsocket(SERVERsServ, FIONBIO,(unsigned long *)&ul);
это как бы намёк на то что должно получиться, это серверная часть в асинхронном режиме
Мне бы не хотелось Вас запутывать, но данный код устанавливает неблокирующий режим, а
неблокирующий режим и асинхронный ввод-вывод - это две разные вещи.
0
5 / 4 / 1
Регистрация: 16.08.2013
Сообщений: 110
13.12.2013, 23:55  [ТС]
Убежденный, вот и у меня закралось мнение что эта за функция
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,472
14.12.2013, 06:55
Цитата Сообщение от PanKiller Посмотреть сообщение
не понятно если создание сокета писать на кнопку, то где разместить таймер и обмен revc и send
если бы я писал в borland c++ builder я бы кинул на форму компонент "таймер". это такой компонент который вызывает обработчик например каждые 200 мс. вот в этот обработчик я бы и запихал тело + участок кода для принятия подключения. еще один таймер обслуживал бы прием данных. список сокетов был бы глобальным объектом или полем формы.
Цитата Сообщение от Убежденный Посмотреть сообщение
как в других (не-Windows) системах решается проблема select
к сожалению не настолько погрузился что бы ощутить эту проблему. что мешает вызывать select с одним дескриптором? и сделать такой вызов с нулевым таймаутом? и сделать в цикле ровно столько вызовов сколько у нас дескрипторов? а после цикла воткнуть Sleep? мешать может только жадность до времени на которое вызывается Sleep - как бы "а вдруг пока мы спим событие произойдет". да, наверное, в системах обслуживающих 1 млн подключений это актуально... наверное дробят список дескрипторов на куски пролазающие в select...
0
5 / 4 / 1
Регистрация: 16.08.2013
Сообщений: 110
14.12.2013, 12:53  [ТС]
на самом деле у меня всё прекрасно работает если прописать несколько функций recv подрад, но если взять эту функцию в цикл while(1) то всё глючит (((

Добавлено через 33 минуты
и зачем нужен таймер ума не приложу

Добавлено через 1 минуту
я так понимаю мне нужно реализовать не блокируемый сокет с асинхронным вводом выводом
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,472
14.12.2013, 18:10
Цитата Сообщение от PanKiller Посмотреть сообщение
на самом деле у меня всё прекрасно работает если прописать несколько функций recv подрад
да, разве кто-то говорил обратное?
Цитата Сообщение от PanKiller Посмотреть сообщение
если взять эту функцию в цикл while(1) то всё глючит
все не может глючить. потому как "все" и "глючит" - это слишком общие термины. вот, например, у меня не глючит. в тех примерах, что я привел имеются циклы и они тоже не глючат. поэтому - предметно: что, где и как работает не так как вы думаете оно должно работать?
Цитата Сообщение от PanKiller Посмотреть сообщение
и зачем нужен таймер ума не приложу
я не знаю какую именно задачу вы решаете. если он вам не нужен - не используйте.
Цитата Сообщение от PanKiller Посмотреть сообщение
я так понимаю мне нужно реализовать не блокируемый сокет с асинхронным вводом выводом
если в контрольной именно так и написано я не вижу причин читать справа налево.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2013, 18:10

accept
Можно ли как то устанавливать тайм-аут для этой функции ?

Подвисает accept
Всем привет! У меня сокетный сервер написан на С++, а клиент на Java. Все прекрасно работает на Windows 8. Поставил систему на Windows...

accept не соединяет
#include "stdafx.h" #include <winsock2.h> #include <windows.h> const int WM_SERVER_ACCEPT = WM_USER+1; HWND hwnd; ...

Функция accept
Здравствуйте уважаемые программисты! Помогите разобраться с основами. Вот я на основе этой статьи написал программу, которая связывает два...

accept error
Ругается на accept... собственно почему? (п.с. под windows всё ок...) int sClient; sockaddr_in client_addr; int client_addr_size...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru