recvfrom函数应该如何用呢

recvfrom函数应该怎么用呢?
如题所示~
我在使用UDPsocket时候~
遇到了一个问题

我在创建完udpsocket后
re:=recvfrom(skt1,pudp_recv^,16,0,addr1,SizeOf(addr1));
其中
addr1:TSockAddr;
pudp_recv^是缓存
系统报错:
Types of actual and formal var parameters must be identical
关于这个recvform 要怎么用呢?
它里边参数应该怎么设置呢  
我去掉 ^ 还是报同样的错误~
为什么类型不匹配呢?是什么原因?
recvfrom这个函数应该怎么用?最好有例子~
谢谢~请指教

------解决方案--------------------
re:=recvfrom(skt1,pudp_recv^,16,0,addr1,SizeOf(addr1));

==>
var i:integer;

i := 16; 
re:=recvfrom(skt1,pudp_recv^,i,0,addr1,SizeOf(addr1));

------解决方案--------------------
探讨
re:=recvfrom(skt1,pudp_recv^,16,0,addr1,SizeOf(addr1));

==>
var i:integer;

i := 16;
re:=recvfrom(skt1,pudp_recv^,i,0,addr1,SizeOf(addr1));

------解决方案--------------------

 pudp_recv: array[0..15] of Byte;;
re:=recvfrom(skt1,pudp_recv,i,0,addr1,SizeOf(addr1));
另外UDP 一般情况下使用是不需要 Connect 服务端的
------解决方案--------------------
SizeOf(addr1))
要定义一个变量赋值,然后再传到recvfrom里去