如题所示~
我在使用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这个函数应该怎么用?最好有例子~
谢谢~请指教
我在使用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这个函数应该怎么用?最好有例子~
谢谢~请指教
解决方案 »
- delphi 关于打印的求助!
- 三层中如何在服务端获取当前正在操作的表名
- ADO 问题
- 请问DELPHI6.0中,12:30:30 - 06:15:30 = 06:15:00 ,有没有这样的时间差函数?
- object pascal 太次了!!!
- 受苦受难的同行们,大家齐来分享项目中遇到的“不可理喻”的问题和经历, 好让我们少受折磨。
- 关于CRC校验的问题!
- 记得有一个比例函数可以对控件的大小进行缩放的,一时想不起来了,谁能告诉我吗??
- delphi是绝对相等还是相对相等.
- 关闭DELPHI5错误???
- messagebox,变量中使用换行.
- 运行一会后,提示no such table :*****
var i:integer;i := 16;
re:=recvfrom(skt1,pudp_recv^,i,0,addr1,SizeOf(addr1));
这样子改还是错的
......
type
test_udp=array[0..15] of Byte;
var
re:integer;
udp_recv:test_udp;
pudp_recv:^test_udp;
addr1:TSockAddr;
...
...
ZeroMemory(@addr1,SizeOf(addr1));
addr1.sin_family:=AF_INET;
addr1.sin_port:=htons(30000);
addr1.sin_addr.S_addr:=inet_addr('192.168.0.1');
i:=connect(skt1,addr1,SizeOf(addr1));
if i<>0 then
begin
ShowMessage('UDP连接失败');
end;
pudp_recv:=@udp_recv;
FillChar(udp_recv,SizeOf(udp_recv),0);
re:=recvfrom(skt1,pudp_recv,16,0,addr1,SizeOf(addr1));
//到这一步就编译出错 :Types of actual and formal var parameters must be identical
但是用到recvfrom函数就出错~
如上边代码
请教下如何解决
function recvfrom(s: TSocket; var Buf; len, flags: Integer;
var from: TSockAddr; var fromlen: Integer): Integer; stdcall;
SizeOf(addr1));要用变量,不要用常数
pudp_recv: array[0..15] of Byte;;
re:=recvfrom(skt1,pudp_recv,i,0,addr1,SizeOf(addr1));
另外UDP 一般情况下使用是不需要 Connect 服务端的
要定义一个变量赋值,然后再传到recvfrom里去