废话不多直接上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;