Здравствуйте, пытаюсь передать строку по TCP, клиент на телефоне, программы написана на B4A, код отправки:
Код:
Sub sock_Connected (Successful As Boolean)
If Successful Then
ModuleConnected = True
AStreams.Initialize(sock.InputStream, sock.OutputStream, "AStreams")
If CommandBuff = "" Then
AStreams.Write("00".GetBytes("ASCII"))
Else
AStreams.Write(CommandBuff.GetBytes("ASCII"))
CommandBuff = ""
End If
Else
SetModuleOffline
End If
End Sub
Получаю на компе:
Код:
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
begin
ClientSocket.Sendln(ChAll); //отправка строки вида: 11100111 клиенту при его подключению
Memo1.Lines.add(ClientSocket.Receiveln()); //получение строки от клиента
end;
Всё работает, получаю в Memo строку вида: 00 (или 11, 12, 21... при непустой переменной CommandBuff на клиенте).
Проблема в том, что от клиента проходят не все команды, в Мемо вижу пропуски:
18
11
12
16
17
23
11
12
14
14
00
Работа клиента B4A на телефоне проверена в работе с другим TCP-сервером, пропусков нет.
Пытался использовать TIdTCPServer:
Код:
AThread.Connection.Writeln(ChAll);
sName := AThread.Connection.ReadLn;
ListBox1.Items.Add(sName);
Клиент подключается, получаю от сервера строку вида: 11001100, но при оправке клиентом строки (00) в ListBox добавляются пустые строки.
Подскажите пожалуйста в чём могут быть причины?