Приветствую!
Lazarus для Android (сборка laz4android) отлично встал. Но я не могу наладить работу с потоками.
Попробовал создать поток по типу NewThread:=TNewThread.Create(true);
Валится, немедленно.
Делаю BeginThread, указываю ссылку на функцию function TstSend(parameter: pointer): ptrint; - опять немедленное закрытие приложения.
А вот пред история. С чего началось. Люди посоветовали работу с сетью по правилам Android вынести в поток.
--------------------------------------------------------------
Потребовалось сделать простое приложение под Android на Delphi. XE - дороговат.
Поставил соотв. сборку Lazarus - все отлично компилируется, APK-файл на смартфон ставиться (Android 4.xx).
Использую для теста Indy простейшую конструкцию:
IdTCPClient1.Host := '192.168.1.52';
IdTCPClient1.Port:=3424;
IdTCPClient1.Connect;
IdTCPClient1.Socket.WriteLn('test');
if not IdTCPClient1.IOHandler.InputBufferIsEmpty then
IdTCPClient1.IOHandler.InputBuffer.Clear;
Нажимаю на кнопку, получаю сообщение - Socket Error # 88 Socket operation on non-socket.
Под Windows все работает.... Под Android -нет.
В манифесте есть: <uses-permission android:name="android.permission.INTERNET" />
Пробовал при сборке разные версии платформы (8 и 22) - не помогло.
Ладно, ухожу от Indy и ставлю в lazarus пакет Inet. Беру компонент LTCPComponent.
Сервер (из примеров c Inet) что-то получает от моего клиента под Android на том же Inet, при нажатии кнопки на смартфоне
сервер выдает "Connection accepted" по событию onAccept. Да видно и по светодиодам на порту,
что на него что-то приходит. Но при попытке отправить на сервер данные, на сервере возникает ошибка: Connection lost.
А на смартфоне возникает ошибка - Error on connect: connection refused. SSL выключено и на клиенте, и на сервере.
Да, и еще. Когда клиент "подсоединяется" к серверу, события onConnect тем не менее не происходит.
Такое ощущение, что и в Indy, и в Inet уже соединение из-под Android происходит как-то не правильно.
-----------------------------------------------------------
Подскажите, пожалуйста: кто-то смог из Lazarus под Android получить доступ к LAN?