|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.05.2012, 21:34 | #1 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
Winsock Чат
Здравствуйте, ребята. Я взялся написать простой чат на асинхронных, не блокирующих сокетах и как уже, считаю, стало понятно - столкнулся с небольшой проблемой. Чат написан, для асинхронной работы решил использовать потоки через _beginthreadex, все работает вполне не плохо. Но вот незадача- так как сокеты блокирующие клиент и сервер должны отправлять сообщения только в порядке очереди. А это уж совсем не катит. Вот хочу попросить Вас подсказать мне нормальное решение данной ситуации.
Вот что я набыдлокодил: Сервер. PHP код:
PHP код:
ioctlsocket должна мне помочь, верно?). Спасибо за раннее. Запустить два потока- один на чтение, а другой на считывание не вариант? П.с Последнее попробовал. тоже никуда не годится- половина сообщений приходят с задержкой. А если организовать потоки через мютекс, то это будут те же самые блок сокеты. верно? Последний раз редактировалось Dizelektwo; 19.05.2012 в 15:29. Причина: добавлено |
19.05.2012, 09:40 | #2 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
изучи функции WSARecv, WSASend и прочие WSA___
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
19.05.2012, 14:53 | #3 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
Спасибо, прочел в msdn про эти ф-ии. Честно говоря понял далеко не все, материала в сети именно по этим средствам win api не так уж и много. Описания в том же msdn говно. Был бы у меня хоть какой-то опыт в сетевой разработке- может вопросов бы и не возникло.
Да и как мне кажется код с этими функциями будет громоздким. Чем мне не подойдет ioctlsocket с select? Каким образом мне можно перевести сокет в неблокирующий режим в потоке клиента? Что бы клиент и сервер могли отправлять друг другу пакеты в любом порядке, а не только ты-мне-я-тебе. Есть простые примеры? |
19.05.2012, 19:48 | #4 | |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
Цитата:
в MSDN всё прекрасно описано
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
|
19.05.2012, 20:35 | #5 | |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
Ну на счет msdn не соглашусь, на счет общей справки- пойдет, как учебный материал- довольно посредственно и уныло. Убогие xemplы неудобного для восприятия размера. Понятие "будь проще" тому ресурсу бы подошло как нельзя к стати. Для изучения нужен минимализированный исходник , а там начинающему плюсовику еще нужно отдирать ненужных мух(левых функций) прежде чем понять алгоритм необходимой функции. Само описание- да, не плохое. Изредка попадаются нормальные исходники. В целом - учиться по msdn это садомазохизм от мелкомягких. Справочник, правда, что надо.
Цитата:
Уже как день не могу найти ничего внятного. П.с смотрю примера полноценного так и нет. Ну да ладно, тогда уж методом тыка. К стати, толкового исходника для ф-ий ioctlsocket и select в msdn нет. Для последней его нет и в помине. Одно лишь описание. Ну да ладно, спасибо тебе все же за не безразличие и кой какие подсказки. Все равно ведь я его до ума довиду рано или чуть позже) Последний раз редактировалось Dizelektwo; 19.05.2012 в 21:09. |
|
20.05.2012, 08:59 | #6 | |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
Цитата:
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многопоточный чат на winsock | btf | Visual C++ | 15 | 28.12.2012 06:15 |
Winsock Чат | Dizelektwo | C/C++ Сетевое программирование | 0 | 18.05.2012 21:24 |
Чат через winsock | Jasper92 | Помощь студентам | 0 | 23.11.2010 14:48 |
WinSock | Onekey | Обсуждение статей | 0 | 20.08.2010 12:04 |
WinSock | ImmortalAlexSan | Работа с сетью в Delphi | 1 | 11.05.2010 14:42 |