| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Проблема с Winsock2 + TThread |
| Автор: Zib 13.12.2007, 07:58 |
| Господа, доброго времени суток! Пишу небольшой демо TCP сервер с использованием WinSock2. Сокет использую в блокирующем режиме. Для того, чтобы сокет не блокировал основной поток ф-я Accept вызывается в отдельном потоке TServerAcceptThread. Ф-я Recv также вызывается в отдельном потоке TServerRecvThread. У принимающего коннекты потока есть событие - OnClientConnected, у читающего сокет - OnClientDisconnected и OnClientReceiveData. Для чего они полагаю понятно из названия. Суть проблемы: По непонятным причинам выкидывается AccessViolation в момент, когда клиент начинает слать данные. Думал, что проблема в том, что процедура события вызывается из потока несинхронизированно. Сихронизировал. Эффект = 0 Второй день бьюсь Сырцы проекта прилагаю. |
| Автор: MetalFan 13.12.2007, 11:59 | ||||||||||
| для передачи в кач.нетипизированного параметра дин.массивов и длинных строк надо использовать их первый элемент. не так:
а так:
пока это в глаза бросилось. посмотри подобные ошибки по коду Добавлено через 10 минут и 21 секунду так же идет асинхронное обращение к vcl в событиях HandleClientDisconnected, HandleClientReceiveData. можно "обернуть"
также просто немного криво выглядит код:
len вообще не нужен, ибо и так нам известна длина дин.массива достаточно имхо такого кода:
Добавлено через 11 минут и 5 секунд p.s. удачи |
| Автор: Zib 13.12.2007, 12:42 |
| Да, и совсем забыл еще спросить: как этот метод (на каждого клиента свой читающий поток) себя поведет в случае, если будет 100 клиентов, а 1000? Или тогда используются другие методы? |
| Автор: MetalFan 13.12.2007, 12:49 |
| Zib, пулы потоков, порты завершения. ищи по Thread Pool, http://www.gamedev.ru/community/mmorpg/articles/?id=6 |
| Автор: Zib 14.12.2007, 14:09 |
| Ща начну клянчить Если кто располагает примером работы с IO Completion port на Дельфи поможите, буду весьма признателен! |
| Автор: MetalFan 14.12.2007, 14:18 |
| есть же примеры несложные на C... |
| Автор: Zib 14.12.2007, 14:49 |
| к сожалению сям необученыС... |