请教,可不可以让系统自动分配一个UDP可用的端口,就像TCP客户端自动分配端口那样.

mme 2003-07-30 11:51:56
可不可以让系统自动分配一个UDP可用的端口,就像TCP客户端自动分配那样的.
因为自己指定一个端口来进行udp通讯,很有可能已经被人家占用了.
而用重用端口又不是很爽 ^_^
不知道有没有方法可以得到一个系统自动分配的.
如果没办法,那可不可以自己找到一个可用的呢?
...全文
315 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mme 2003-07-30
  • 打赏
  • 举报
回复
呵呵,先谢谢"子寒"兄的关心,
你说得不错,的确是有两个端口.
就客户端来说:
一个是客户端自己的端口,它还要接收服务器发回来的信息嘛!
另一个是对方的端口.

你所说的系统自动分配的端口就是自己的端口吧!
可是,当你bind了一个端口之后,比如说bind(3000),
你就用3000端口和服务器通讯了.这时,并没有系统分配端口给你.不信,试试看就知道了.
还有,我不用控件的:) ,因为我自己封装了socket类.
zihan 2003-07-30
  • 打赏
  • 举报
回复
to mme(dog):
好像还是你说错了,发送端一共要涉及到的有两个端口,一个是发送端自己的端口,是有系统自动分配的,你说的那个端口是接收端的端口和ip,当然要自己指定了,所以发送端由系统自动分配一个UDP可用的端口"是正确的.
mme 2003-07-30
  • 打赏
  • 举报
回复
to 楼上的:
"发送端由系统自动分配一个UDP可用的端口"
不是这样的,因为我见过很多例子,都是要自己指定一个端口和对方IP,才可以通讯的
偶终于发现答案了,哈哈哈哈哈,送分........

猎人66 2003-07-30
  • 打赏
  • 举报
回复
to mme(dog) :
同意ybluo()
用UDP通讯的时候 接收端要与一个端口绑定 ,发送端由系统自动分配一个UDP可用的端口,就像TCP客户端自动分配那样的.
zihan 2003-07-30
  • 打赏
  • 举报
回复
你把那个控键的active设置为true的时候,如果系统没有分配过这个端口,你就可以正常使用,如果系统已经分配了这个端口,那么就会抛出一个异常,你可以接到这个异常,然后继续处理,比如说把端口加一,然后继续申请,代码如下,delphi的,你自己更改一下.
function TForm1.CreatePort(): boolean;
begin
try
IDUdpSErver1.DefaultPort := LocalPort;
IdUdpServer1.Active := True;
IdUdpServer1.OnUDPRead := IdUDPServer1UDPRead;
except
LocalPort := LocalPort + 1;
IdUdpServer1.Active := False;
IdUdpServer1.Free;
IdUdpServer1 := TIdudpServer.Create(Application);
CreatePort;
end;
Result := True;
end;
ybluo 2003-07-30
  • 打赏
  • 举报
回复
用UDP通讯的时候 接收端要与一个端口绑定 ,发送端由系统自动分配一个UDP可用的端口,就像TCP客户端自动分配那样的.

个人理解
mme 2003-07-30
  • 打赏
  • 举报
回复
to zcm(我是一只猪,我有一个梦) 那按照你的说法就是:
用UDP通讯的时候,端口只有自己指定啰?
那这样能保证不会有冲突吗?
COKING 2003-07-30
  • 打赏
  • 举报
回复
65536 个端口。 随你挑!
猎人66 2003-07-30
  • 打赏
  • 举报
回复
你怎么知道系统给你分配了哪个端口啊,这样做有意义吗?
mme 2003-07-30
  • 打赏
  • 举报
回复
晕那,竟然没人理会:(

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧