procedure TForm1.MSComm1Comm(Sender: TObject);
var
tmpVar : Variant;
begin
if MSComm1.CommEvent = ComEvReceive then
begin
if mscomm1.InBufferCount = 200 then
begin
tmpVar := MSComm1.Input;
mscomm1.output := tmpVar;
sleep(10);
CnUDP1.SendBuffer((@tmpVar), 200, false); //如果按照这样发送,对方收到的全是00;
CnUDP1.SendBuffer(???, Length(s), False); //现在如何将tmpVar的数据在局域网内通过cnUDP(UDP控件)将其送到另一台计算机上
end;
end;
end;
附:cnUDP发送数据包的函数: function SendBuffer(Buff: Pointer; Length: Integer; BroadCast:Boolean = False): Boolean;
{* 发送一个数据块。如果 BroadCase 为真,执行 UDP 广播,否则发送数据到RomoteHost 的机器上的 RemotePort 端口}
cnUDP接收数据包的事件:procedure TForm1.CnUDP1DataReceived(Sender: TComponent; Buffer: Pointer;Len: Integer; FromIP: String; Port: Integer);
var
tmpVar : Variant;
begin
if MSComm1.CommEvent = ComEvReceive then
begin
if mscomm1.InBufferCount = 200 then
begin
tmpVar := MSComm1.Input;
mscomm1.output := tmpVar;
sleep(10);
CnUDP1.SendBuffer((@tmpVar), 200, false); //如果按照这样发送,对方收到的全是00;
CnUDP1.SendBuffer(???, Length(s), False); //现在如何将tmpVar的数据在局域网内通过cnUDP(UDP控件)将其送到另一台计算机上
end;
end;
end;
附:cnUDP发送数据包的函数: function SendBuffer(Buff: Pointer; Length: Integer; BroadCast:Boolean = False): Boolean;
{* 发送一个数据块。如果 BroadCase 为真,执行 UDP 广播,否则发送数据到RomoteHost 的机器上的 RemotePort 端口}
cnUDP接收数据包的事件:procedure TForm1.CnUDP1DataReceived(Sender: TComponent; Buffer: Pointer;Len: Integer; FromIP: String; Port: Integer);
更正:CnUDP1.SendBuffer(???,数据块长度, False);
var
pTmp: PChar;
sTmp: String;
begin
GetMem(pTmp, 200);
try
// Zeromemroy
FillChar(pTmp, 200, #0); sTmp:= '测试'; // Copy data
StrPCopy(pTmp, sTmp, Length(sTmp); CnUDP1.SendBuffer(pTmp, 200, false);
finally
FreeMem(pTmp);
end;
end;
MyStream: TMemoryStream;
strMessage: String;
Begin
strMessage := 'TEST';
MyStream := TMemoryStream.Create;
try
MyStream.Write(strMessage[1], Length(strMessage));
CNUDP1.SendStream(MyStream);
except
on E:Exception do
begin
MyStream.Free;
exit;
end;
end; MyStream.Free;
end;
再进行发送
P:Pointer;
tmpVar:Variant;
size:Integer;
begin
size:= VarArrayHighBound(tmpVar, 1) - VarArrayLowBound(tmpVar, 1) + 1;
P := VarArrayLock(tmpVar);
VarArrayUnlock(Value);
CnUDP1.SendBuffer(P, size, false);
var
tmpVar : string;
begin
tmpVar := MSComm1.Input;
CnUDP1.SendBuffer(PChar(tmpVar), 200, false);
procedure TForm1.CnUDP1DataReceived(Sender: TComponent; Buffer: Pointer;Len: Integer; FromIP: String; Port: Integer);
varbeginend;