如何发送 Pointer ?

wealsh 2007-12-08 02:47:53
procedure Getdata(PBUF:Pointer;iLen:DWORD);stdcall;
begin
如何将 pbuf ilen 发送出去?
sendto(.....);
end;



接收以后作为以下函数的参数:
function Setdata(bBuf:Pbyte,dlen:Dword):Dword;
begin

end;
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
edongxu 2007-12-09
  • 打赏
  • 举报
回复
不知道你的发送是什么意思
用消息发送还是函数传递?
是dll传给调用者,还是调用者创给dll
QSmile 2007-12-09
  • 打赏
  • 举报
回复
一意孤行 说得很明白了


TSendCommand = (scData, sc....); //定义一组发送命令枚举类型
TSendData = packed record
CMD : TSendCommand; //命令字
SendLen: DWORD; //长度
SendBuf: array[0..511] of byte; //发送内容
end;

只是数据太长时, SendBuf 不能定义成固定数组。不然有效数据太少了
wealsh 2007-12-09
  • 打赏
  • 举报
回复
接收到数据后如何再将 SendBuf 转为指针?
etomahawk 2007-12-09
  • 打赏
  • 举报
回复
var
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;
ly_liuyang 2007-12-09
  • 打赏
  • 举报
回复
还是多看基础书吧~
wealsh 2007-12-09
  • 打赏
  • 举报
回复
我该如何把指针数据转入到 结构体再发送呢?
edongxu 2007-12-09
  • 打赏
  • 举报
回复
明白你的意思了
嗨,不知道说什么了,汗!
你是在网络上传数据,它必须是两台计算机之间的通信,传指针有什么用!!!

你要传数据到另一台计算机的话,必须建立一个自定义的通信格式
按自定义的格式发送,然后也按自定义的格式重组数据。。。。。

反正网络只能传递字节流,比如一个SendLen:DWORD; 的数据,你必须拆成四个字节,然后发送,接受后再把四个字节重组
wealsh 2007-12-09
  • 打赏
  • 举报
回复
procedure Getdata(pbuf:Pointer;iLen:DWORD);stdcall; //dll里面的函数
begin
现在将:pbuf、ilen 发送出去
发送格式:
TSendData = packed record
Cmd:string;
Sendbuf:PByte;
SendLen:DWORD;
end;

UDP 发送 Sendto(...)

接收以后把 sendbuf、sendlen
传给别一个 dll 函数:

Setdata(bBuf:Pbyte,dlen:Dword)
wealsh 2007-12-08
  • 打赏
  • 举报
回复
TSendData = packed record
Cmd:string;
Sendbuf:PByte;
SendLen:DWORD;
end;

需要用这样格式发送与接收该如何处理?

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧