Цитата:
Сообщение от alanatolich
Переделал, но все равно выдает ошибку.
[DCC Error] mypotok.pas(16): E2065 Unsatisfied forward or external declaration: 'TMyThread.ClientSocketRead'
|
Тебе надо переписать объявление процедуры ниже по коду. Метод класса должен "раскрываться" как-то так:
Код:
procedure TMyThread.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
end;
Цитата:
Расскажите что представляют из себя асинхронный (неблокируемый)/синхронный (блокируемый) сокет. Расскажите в чем разница использования асинхронный (неблокируемый)/синхронный (блокируемый) сокет. Почему не правильно использовать асинхронный (неблокируемый) сокет в потоке?
|
Всё просто. Синхронный выполняется в одном потоке с программой, что приводит к тому, что при работе с этим сокетом программа "подвисает". Оно и понятно - пока не отработает часть с сокетами, для самой программы ресурсов выделять никто не будет.
В случае с асинхронными сокетами сразу выделяется отдельный поток, в котором работает вся сетевая часть. А взаимодействие с программой происходит через вызовы т.н. "
каллбэков", которые (при правильном построении кода) совершенно не мешают основной программе. Именно поэтому использование асинхронных сокетов в потоке не то, что бы "неправильно", а просто бессмысленно...