У меня эта невероятно сумасшедшая ошибка! Я бросаю idhttpserver, webbrowser на новое мобильное приложение для Android.Delphi XE5 Ошибка сегментации Httpserver Android?
Я хочу, чтобы сервер предоставлял контент браузеру. Он отлично работает на окнах, но не работает на моем устройстве Android. Я тестировал tcpserver и tcpclient. Я могу заставить клиента подключиться, но когда я начинаю writeln и readln, я получаю ошибку сегментации.
Даже если я запускаю с отладкой, приложение все еще падает ... вот фрагмент кода.
procedure TForm37.Button1Click(Sender: TObject);
begin
IdHTTPServer1.Bindings.Add;
try
IdHTTPServer1.Active := true;
if IdHTTPServer1.Active then
Button1.Text := 'Server Started';
except on E: Exception do
Button1.Text := 'Server Failed';
end;
end;
procedure TForm37.Button2Click(Sender: TObject);
var
astring : string;
begin
try
astring := IdHTTP1.Get('http://10.0.1.78:6000/');
// or astring := IdHTTP1.Get('http://127.0.0.1:6000/');
ShowMessage(astring);
except on E: Exception do
Button2.Text := 'connection failed';
end;
end;
procedure TForm37.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
AResponseInfo.ContentText :=
'<html><head><title>My First Response</title></head>' +
'<body>Command: ' + ARequestInfo.Command +
'<br />Host: ' + ARequestInfo.Host +
'<br />URI: ' + ARequestInfo.URI +
'<br />UserAgent: ' + ARequestInfo.UserAgent +
'</body></html>';
end;
'Bindings.Add' просто создает новую привязку к IP 0.0.0.0, порт 80. Ни один из них не относится к IP-адресу или порту, к которому вы пытаетесь получить доступ. После добавления вы должны настроить привязку. –
Более точно, 'Bindings.Add' создает новое связывание, которое по умолчанию имеет значение свойства' TIdCustomTCPServer.DefaultPort', которое по умолчанию остается в 80 в 'TIdHTTPServer ', но может быть изменено. Skywalker мог установить «DefaultPort» до 6000 перед вызовом 'Bindings.Add'. –
@Skywalker: укажите, какая строка кода действительно вызывает ошибку, и укажите полное сообщение об ошибке. Ошибка сегментации является эквивалентом платформы AccessViolation на Windows. Скорее всего, это означает, что что-то не было правильно инициализировано, прежде чем вы пытались его использовать. –