function NewUdpPort(udp:TNMUdp):integer;
var
gsin:TSOCKADDRin;
// udptmp:TNMUdp;
begin
// udptmp:=tnmudp.Create(nil);
gSIN.SA_FAMILY:=2;//udp
gsin.sin_addr.s_un_b.s_b1:=#127;
gsin.sin_addr.s_un_b.s_b2:=#0;
gsin.sin_addr.s_un_b.s_b3:=#0;
gsin.sin_addr.s_un_b.s_b4:=#1;
Result:=8000;
while true do
begin
gsin.sin_port:=htons(Result);
if bind(udp.ThisSocket,gsin,SIZEOF(gSIN))<>0 then
inc(Result)
else
Break;
end;
// udptmp.Free;
// udp.LocalPort :=Result;
end;
这是从我以前程序中COPY出来的,你看着改一下就可以了