如何在局域网里用udp传送一个整形数组?(100分)

  • 主题发起人 主题发起人 helloymz
  • 开始时间 开始时间
H

helloymz

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在局域网里用udp传送一个整形数组?
sendbuf和sendstream方法好像只能传送字符串的?
 
用xml包装后,按字符串的形式发过去可以吧?!
 
你可以先发一个长度,然后把一个一个元素发过去
 
SendBuf 当然可以发送整型数组啦!
var
i: Integer;
buf: array of Integer;
begin
SetLength(buf, 100);
for i := 0 to 99 do
buf := i;

XXX.SendBuf(buf[0], 100 * SizeOf(Integer));

end;

 
to beta:
对不起,说错了,是sendbuffer。
我试过了,你的那种办法不行阿。
 
只能关注。
 
发送整型数组要又4位发送一个整数
a是你要发送的整数数组
var
buf: array of Char;
Len: Integer;
begin
Len := (High(a) - Low(a) + 1) * Sizeof(Integer);
SetLength(buf,len);
move(a,buf,Len);
nmudp1.SendBuffer(buf,Len);


 
先写到TMemoryStream里面,再发
 
zhukewen:
我用你的方法,但是传过去,我重新move(s,a,len),重数组里面读出来的却不是原来
的数据?这是为什么?
 
试试发送整型数据前先用htonl()函数处理一下
比如 i := htonl(i);

htonl function converts a u_long from host to TCP/IP network byte order (which is big-endian)
 
To zw84611:
不用这么做,呵呵,你发过去的格式和你接受到的格式是一样的,
端口和IP之类的要转换是由于设备的原因,
 
后退
顶部