Здравствуйте, ptomaine, Вы писали:
P>Здравствуйте, Сбежал из..., Вы писали:
СИ>>Здравствуйте, ptomaine, Вы писали: P>>>
P>>> while( !sock.connected ); //ждём соединения
P>>>
СИ>>вот именно из-за этой части.....
P>Не заканчивает работу-то, конечно, из-за этой строки. Но разве не должно после соединения вызваться OnConnect, в котором значение connected меняется?
он не может, ты же в цикле стоиш а сокет в твоем же потоке работает
Здравствуйте, ptomaine, Вы писали:
СИ>>он не может, ты же в цикле стоиш а сокет в твоем же потоке работает
P>А как же тогда мне ждать соединения?
ну вообще то если у тебя консольное приложение, то зачем использовать CAsyncSocket? пользуйся простыми сокетами
Здравствуйте, Сбежал из..., Вы писали: СИ>ну вообще то если у тебя консольное приложение, то зачем использовать CAsyncSocket? пользуйся простыми сокетами
Могу и ими... Только проблема остаётся.
Собственно, проблема заключается вот в чём:
Есть сервер и клиент. Но это довольно условно, потому что протокол таков, что и клиент, и сервер могут посылать пакеты в любой момент времени. И на них надо реагировать.
Т.е. с одной стороны, клиент сидит и ждет сообщения от сервера. Но в любой момент должен уметь послать своё сообщение. Можно представить это себе как чат.
P.S. Прочитав то, что написал, понял, что наверняка есть куча примеров...
Здравствуйте, ptomaine, Вы писали:
P>Здравствуйте, Сбежал из..., Вы писали: СИ>>ну вообще то если у тебя консольное приложение, то зачем использовать CAsyncSocket? пользуйся простыми сокетами
P>Могу и ими... Только проблема остаётся. P>Собственно, проблема заключается вот в чём: P>Есть сервер и клиент. Но это довольно условно, потому что протокол таков, что и клиент, и сервер могут посылать пакеты в любой момент времени. И на них надо реагировать. P>Т.е. с одной стороны, клиент сидит и ждет сообщения от сервера. Но в любой момент должен уметь послать своё сообщение. Можно представить это себе как чат.
если писать на WinSock то проблемма не остается, ты либо сидиш синхронно и ждеш коннекта (предпочтительние), либо сидиш и ждеш эвент в любом случае не крутиш бесконецный цикл....
ЗЫ: а примеров действительно куча, даже тута P>P.S. Прочитав то, что написал, понял, что наверняка есть куча примеров...
А надо выкинуть CAsyncSocket подальше, и пользоваться обычным Berkeley API, если есть желание — то в класс его обернуть.
CAsyncSocket содержит кучу наворотов, ненужных в стандартных случаях. Собственно, в UNIX вообще никаких async sockets нет — а ОС славится поддержкой TCP/IP
Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>А надо выкинуть CAsyncSocket подальше, и пользоваться обычным Berkeley API, если есть желание — то в класс его обернуть.
MSS>CAsyncSocket содержит кучу наворотов, ненужных в стандартных случаях. Собственно, в UNIX вообще никаких async sockets нет — а ОС славится поддержкой TCP/IP
Я и не против пользоваться Berkeley API, только у меня не получается. Правда, я это сделал на перле. И там, если в одном thread сделать recv ( и он ждет ), то в другом send тоже повисает... Правда, может я там скривил. Завтра попробуй на обычных сокетах покрутить...