如何给TNMUDP指定LocalPort???(100分)

  • 主题发起人 主题发起人 郑海山
  • 开始时间 开始时间

郑海山

Unregistered / Unconfirmed
GUEST, unregistred user!
我如何选择一个空的port呢?(我不想把他设置为0然后让程序自动选择。)
类似oicq,从4000开始试,如果端口被占用,就+1再试。
有没有类似如下的选择代码:
nmudp := TNMUDP.Create(Self);
i := 4000;
for j := 1 to 100 do
try
nmudp.LocalPort := i;
Break;
except //被占用
Inc(i);
end;
ShowMessage(nmudp.LocalPort);
 
??????????/
 
好象用一个socket控件可以,只是太笨了点。
 
郑海山:

必须换控件,NMUDP肯定不得行,其帮助说清楚的,LocalPort只能在设计时候设置,除非
你手工Create这个控件,那样也只能设置一次。原文:
this property can only be set during design-time, unless the component is
created dynamically in your source code (using the Create method), in which
case the LocalPort property can be set once.

其它控件可以实现,我使用的ICS,它因为有个Listen方法,所以可以用你上面的格式做。

再说一句NMUDP问题多多,你必须得换,否则不关闭你的程序Windows就无法关闭。
 
to:郑海山
这样是不行的,即使设置一个已被使用了的端口,是不会产生任何例外情况的。
to:光子
NMUDP在运行中是可以随时改变LOCALPORT的!
或许是我装了个高版本的原故?
另外,如果将LOCALPORT设置成0,系统会自动选用一个没有被使用的端口,那么怎样得出
这个由系统分配的端口呢?
 
检测某端口是否已经被使用,如果使用换个端口,Create一个NMUDP,设置新的localport啊
这样行吗?
 
后退
顶部