procedure Getdata(PBUF:Pointer;iLen:DWORD);stdcall;
begin
如何将 pbuf ilen 发送出去?
sendto(.....);
end;接收以后作为以下函数的参数:
function Setdata(bBuf:Pbyte,dlen:Dword):Dword;
begin
end;
begin
如何将 pbuf ilen 发送出去?
sendto(.....);
end;接收以后作为以下函数的参数:
function Setdata(bBuf:Pbyte,dlen:Dword):Dword;
begin
end;
Cmd:string;
Sendbuf:PByte;
SendLen:DWORD;
end;需要用这样格式发送与接收该如何处理?
用消息发送还是函数传递?
是dll传给调用者,还是调用者创给dll
begin
现在将:pbuf、ilen 发送出去
发送格式:
TSendData = packed record
Cmd:string;
Sendbuf:PByte;
SendLen:DWORD;
end;UDP 发送 Sendto(...)接收以后把 sendbuf、sendlen
传给别一个 dll 函数:Setdata(bBuf:Pbyte,dlen:Dword)
嗨,不知道说什么了,汗!
你是在网络上传数据,它必须是两台计算机之间的通信,传指针有什么用!!!你要传数据到另一台计算机的话,必须建立一个自定义的通信格式
按自定义的格式发送,然后也按自定义的格式重组数据。。反正网络只能传递字节流,比如一个SendLen:DWORD; 的数据,你必须拆成四个字节,然后发送,接受后再把四个字节重组
m_Buf: array[0..511] of byte;
m_Data: TSendData;
begin
//填充数据
m_Data.Cmd:= '';
m_Data.SendBuf:= ..;
m_Data.SendLen:= ..; ZeroMemory(m_Buf, 512); //清空缓冲
Move(m_Data, m_Buf, SizeOf(m_Data)); //将数据复制到缓冲区
...
end;//建议不要用这种结构体:
TSendData = packed record
Cmd:string;
Sendbuf:PByte;
SendLen:DWORD;
end;//建议的方式:
TSendCommand = (scData, sc....); //定义一组发送命令枚举类型
TSendData = packed record
CMD : TSendCommand; //命令字
SendLen: DWORD; //长度
SendBuf: array[0..511] of byte; //发送内容
end;
TSendCommand = (scData, sc....); //定义一组发送命令枚举类型
TSendData = packed record
CMD : TSendCommand; //命令字
SendLen: DWORD; //长度
SendBuf: array[0..511] of byte; //发送内容
end;只是数据太长时, SendBuf 不能定义成固定数组。不然有效数据太少了