王
王欣寓
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟有两种想法,一种是用TNMUDP控件,但发送广播时需不需要利用setsockopt函数设置
广播选项,如果需要,那么该函数的第一个参数怎么获得呢?如果那么热心的大哥有该控件的
广播实例,能否给俺一份。
另外,我想用winsock API实现,但是,老是在sendto函数那儿卡壳,程序如下:
procedure SndBrdPkt;
var
ssndBrd:TSOCKET;
sndto:TSockAddrIn;
TempVar,TempVar1,TempVar2,TempVar3:integer;
begin
ssndBrd:=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
if ssndBrd=INVALID_SOCKET then
exit;
TempVar:=1;
BuildBrdPkt(@LocalHostIPAddr);//组成广播报文
//填充SockAddrIn结构
with sndto do
begin
sin_family:=PF_INET;//协议族
sin_port:=PUB_BrdPort;//发送端口
sin_Addr.S_Addr:=htonl(INADDR_BROADCAST);//广播地址
end;
setsockopt(ssndBrd,SOL_SOCKET,SO_BROADCAST,@TempVar,sizeof(TempVar));
// TempVar1:=sizeof(BrdPkt);
TempVar2:=0;
TempVar3:=sizeof(sndto);
TempVar:=sendto(ssndBrd,pChar(@BrdPkt),TempVar1,TempVar2,@sndto,sizeof(sndto));
end;
编译的时候老是出现constant object can not be passed as var parameters.
广播选项,如果需要,那么该函数的第一个参数怎么获得呢?如果那么热心的大哥有该控件的
广播实例,能否给俺一份。
另外,我想用winsock API实现,但是,老是在sendto函数那儿卡壳,程序如下:
procedure SndBrdPkt;
var
ssndBrd:TSOCKET;
sndto:TSockAddrIn;
TempVar,TempVar1,TempVar2,TempVar3:integer;
begin
ssndBrd:=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
if ssndBrd=INVALID_SOCKET then
exit;
TempVar:=1;
BuildBrdPkt(@LocalHostIPAddr);//组成广播报文
//填充SockAddrIn结构
with sndto do
begin
sin_family:=PF_INET;//协议族
sin_port:=PUB_BrdPort;//发送端口
sin_Addr.S_Addr:=htonl(INADDR_BROADCAST);//广播地址
end;
setsockopt(ssndBrd,SOL_SOCKET,SO_BROADCAST,@TempVar,sizeof(TempVar));
// TempVar1:=sizeof(BrdPkt);
TempVar2:=0;
TempVar3:=sizeof(sndto);
TempVar:=sendto(ssndBrd,pChar(@BrdPkt),TempVar1,TempVar2,@sndto,sizeof(sndto));
end;
编译的时候老是出现constant object can not be passed as var parameters.