![]() |
|
![]() ![]() ![]() |
|
Agentx86 |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
Нашел я вот такой исходник на firststeps
Запускаю. Сервер выдает ошибку. Проверяю отладчиком. Ошибка вот в этой строчке CSocketFile file(&RecieveSocket). С одной стороны это логично. Клиент еще не подключился, а я уже пытаюсь принимать данные. Но с другой стороны для меня странно, что прошел accept. Поидее программа должна была зависнуть в этой точке и ждать подключения клиента. Ладно. Выношу вот этот кусок в отдельный поток
Запускаю сервер. Запускаю клиент. Клиент не коннектится. IP адрес указал 127.0.0.1 порт 5555(клиент/сервер). Что я делаю неправильно? Если у когото есть пожожий исходник, поделитесь. |
||||
|
|||||
Agentx86 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
Немогу понять в чем проблема.
Пишу вот эти две строчки CSocket ServerSocket; ServerSocket.Create(5534) Метод Create возвращает false. Что здесь можно сделать неправильно мне не понятно. Пробывал это на разных портах. Добавлено через 4 минуты и 22 секунды Понял в чем проблема. При создании приложения надо поставить галочку что будут использоваться сокеты. |
|||
|
||||
Agentx86 |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
Не получается поместить accept в отдельный поток.
после вызова функции listen, запускаю поток. вот код потоковой функции
поток создаю вот так
Причем я пробовал в потоковой функции обращаться к m_mainSocket как к глобальной переменной. Также пытался создать pSocket глобально. Ничто не помогает. После запуска потока на строке с Accept выскакивает ошибка Debug Assertion Failed в sockcore.cpp. Это сообщение отредактировал(а) Agentx86 - 8.6.2009, 00:53 |
||||
|
|||||
Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
AfxSocketInit() в каком месте запускали?
Надеюсь, до конструирования сокетов и Create() ?
А в каком месте запускается сама потоковая функция? Очень похоже, что сокет, указатель на который передан в lpParam, до этого момента не был проинициализирован как надо. Это сообщение отредактировал(а) Dreamer_0x01 - 9.6.2009, 13:37 -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
Agentx86 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
AfxSocketInit() запускал после Create. Перенес т.к. надо. Ошибка не исчезла. Вот создал чистое приложение, чтобы ничего лишнего не отвлекало.
|
|||
|
||||
Agentx86 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
Большо спасибо, Dreamer_0x01
Помог решить проблему. Главная проблема была это то что я ServerSocket объявил глобально. Еще один вопросик есть. Как перевести сокет в синхронный режим(блокирующий)? |
|||
|
||||
Agentx86 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
Хочу сам подключать клиентов в отдельном потоке. Написал вот такой код.
Не работает, потомучто сокет работает в асинхронном режиме. Прочитал для того, чтобы передать сокет в поток нужно использовать Attach и Detach. Чтото у меня не получается это сделать. Пример из МСДНа не очень понял. Можете подправить этот код при помощи Attach и Detach, так чтобы функция Accept работал синхронно. Или объясните на пальцах как использовать эти методы. Заранее, большое спасибо. Это сообщение отредактировал(а) Agentx86 - 19.6.2009, 13:59 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |