我正在用Indy 10编写一个简单的客户端/服务器聊天程序.我的服务器(idtcpserver)向客户端发送命令,客户端应答,但是当连接多个客户端并且服务器发送命令时,所有客户端都连接将数据发送到服务器.
如何将命令发送到指定的客户端而不是全部?
我试图从"Androidapi.JNI.App.pas"(TJservice)扩展一个类/接口,我需要扩展这个类来进行服务.可能吗?怎么样?
我需要重写方法,如:oncreate,onbind,ondestroy.但我不知道怎么做.
我试过这样的事情:
type Tandroidservice= class(TJService)
function onBind(intent: JIntent): JIBinder; override;
procedure onCreate; override;
procedure onDestroy; override;
procedure onStart(intent: JIntent; startId: Integer); override;
end;
Run Code Online (Sandbox Code Playgroud)
有这个错误:
[DCC Error] Unit1.pas(13): E2137 Method 'onBind' not found in base class
[DCC Error] Unit1.pas(14): E2137 Method 'onCreate' not found in base class
[DCC Error] Unit1.pas(15): E2137 Method 'onDestroy' not found in base class
[DCC Error] Unit1.pas(16): E2137 Method 'onStart' not found in base class
[DCC Error] Unit1.pas(13): E2065 Unsatisfied forward or external declaration: 'Tandroidservice.onBind' …
Run Code Online (Sandbox Code Playgroud) 我试图隐藏运行时和 进程发送shell命令到root电话我不明白为什么我有分段错误.在互联网上,我发现java代码如:
Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot now"});` for reboot of the phone or `Runtime.getRuntime().exec("su");
Run Code Online (Sandbox Code Playgroud)
对于linux root权限.
我试着在转换后只用函数发送"su"命令,但我觉得我错了......我认为一个可能的问题可能是来自java类型的Jstring转换数组.
unit Androidapi.JNI.Root;
interface
procedure AskRoot;
implementation
uses System.SysUtils,
Androidapi.JNIBridge,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,
FMX.Helpers.Android;
type
JProcess = interface;
JRuntime = interface;
//----------------------------------JProcess----------------------
JProcessClass = interface(JObjectClass)
['{7BFD2CCB-89B6-4382-A00B-A7B5BB0BC7C9}']
end;
[JavaSignature('java/lang/Process')]
JProcess = interface(JObject)
['{476414FD-570F-4EDF-B678-A2FE459EA6EB}']
{Methods}
procedure destroy; cdecl;
function exitValue:integer;cdecl;
function getErrorStream:JInputStream; cdecl;
function getInputStream:JOutputStream; cdecl;
function waitFor:integer;cdecl;
end;
TJProcess = class(TJavaGenericImport<JProcessClass, JProcess>) end;
//----------------------------------Jruntime----------------------
JRuntimeClass = interface(JObjectClass)
['{3F2E949D-E97C-4AD8-B5B9-19CB0A6A29F3}']
{costant}
end;
[JavaSignature('java/lang/Runtime')]
JRuntime = interface(JObject)
['{C097A7EC-677B-4BCB-A4BD-7227160750A5}'] …
Run Code Online (Sandbox Code Playgroud)