![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| Zib |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Господа, доброго времени суток!
Пишу небольшой демо TCP сервер с использованием WinSock2. Сокет использую в блокирующем режиме. Для того, чтобы сокет не блокировал основной поток ф-я Accept вызывается в отдельном потоке TServerAcceptThread. Ф-я Recv также вызывается в отдельном потоке TServerRecvThread. У принимающего коннекты потока есть событие - OnClientConnected, у читающего сокет - OnClientDisconnected и OnClientReceiveData. Для чего они полагаю понятно из названия. Суть проблемы: По непонятным причинам выкидывается AccessViolation в момент, когда клиент начинает слать данные. Думал, что проблема в том, что процедура события вызывается из потока несинхронизированно. Сихронизировал. Эффект = 0 Второй день бьюсь Сырцы проекта прилагаю. Присоединённый файл ( Кол-во скачиваний: 13 )
CSDemo.rar 28,17 Kb |
|||
|
||||
| MetalFan |
|
||||||||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
для передачи в кач.нетипизированного параметра дин.массивов и длинных строк надо использовать
их первый элемент. не так:
а так:
пока это в глаза бросилось. посмотри подобные ошибки по коду Добавлено через 10 минут и 21 секунду так же идет асинхронное обращение к vcl в событиях HandleClientDisconnected, HandleClientReceiveData. можно "обернуть"
также просто немного криво выглядит код:
len вообще не нужен, ибо и так нам известна длина дин.массива достаточно имхо такого кода:
Добавлено через 11 минут и 5 секунд p.s. удачи -------------------- There are always someone smarter than you... |
||||||||||
|
|||||||||||
| Zib |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Мммм.... Точно! Тупанул ащще Собственно в этом и была проблема. Смутило именно то, что AccessViolation выскакивал не каждый раз, а както нерегулярно. Т.е. мог выскочить, а мог и нет. В любом случае огромное спасибо, камрад! Буду внимательнее |
|||
|
||||
| Zib |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Да, и совсем забыл еще спросить: как этот метод (на каждого клиента свой читающий поток) себя поведет в случае, если будет 100 клиентов, а 1000? Или тогда используются другие методы?
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| Zib |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Ща начну клянчить
Если кто располагает примером работы с IO Completion port на Дельфи поможите, буду весьма признателен! |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
есть же примеры несложные на C...
-------------------- There are always someone smarter than you... |
|||
|
||||
| Zib |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
к сожалению сям необученыС...
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |