废话不多直接上android发送代码:
String message = “这是一个中文测试”;<span style="white-space:pre"> </span>// 这里是重点,要将字符串进行Base64加密
message = Base64.encodeToString(message.getBytes(), Base64.DEFAULT);
int server_port = 12345;
DatagramSocket s = null;
try {
s = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
InetAddress local = null;
try {
local = InetAddress.getByName(edt_ip.getText().toString());
} catch (UnknownHostException e) {
e.printStackTrace();
Toast.makeText(this, "无法连接服务器!", Toast.LENGTH_SHORT).show();
}
int msg_length = message.length();
byte[] messageByte = message.getBytes();
DatagramPacket p = new DatagramPacket(messageByte, msg_length, local,
server_port);
try {
s.send(p);
} catch (Exception e) {
Log.e("UDPTEST", e.toString());
Toast.makeText(this, "发送失败!", Toast.LENGTH_SHORT).show();
}然后看delphi端接收处理:
uses EncdDecd
function IdBytesToAnsiString(ParamBytes: TIdBytes): AnsiString;
var
i: Integer;
S: AnsiString;
begin
S := '';
for i := 0 to Length(ParamBytes) - 1 do
begin
S := S + AnsiChar(ParamBytes[i]);
end;
Result := S;
end;
procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle);
var
sTmp : string;
begin // 将接收的<span style="font-family: Arial, Helvetica, sans-serif;">TIdBytes 转换成字符串</span>
sTmp:= IdBytesToAnsiString(AData); // 将字符串进行Base64解码
Memo1.Lines.Add(DecodeString(sTmp));
end;

本文介绍了一种使用Base64加密的方式实现Android设备通过UDP协议向Delphi应用程序发送消息的方法。Android端使用Java进行Base64加密,并通过DatagramSocket发送数据包;Delphi端则对接收到的数据包进行Base64解密。
459

被折叠的 条评论
为什么被折叠?



