gpt4 book ai didi

sockets - bind() - 如何在同一个套接字上多次调用 bind()

转载 作者:可可西里 更新时间:2023-11-01 02:57:43 24 4
gpt4 key购买 nike

我在已将端口值设置为 0 的地址上使用 bind()。我知道通过这种方式,它将一个随机端口绑定(bind)到该地址。但我只希望端口值 x 使得 (x >= 0 && x <= 1023) || (x >= 49152) 被选择了,但我注意到,在可以选择的随机端口中,也有 port > 49152 。但是,如果我重新调用 bind() ,它会给出错误:参数无效。如何在不给出无效参数错误的情况下重新调用 bind() 函数,或者如何以另一种方式解决此问题?非常感谢。

最佳答案

您不能在已经绑定(bind)的套接字上再次调用 bind()。套接字一旦绑定(bind),就无法更改其绑定(bind)。

绑定(bind)到端口 0 将绑定(bind)到一个可用的随机临时端口,临时端口的范围由操作系统控制,而不是应用程序。某些操作系统确实提供配置值来设置范围,但您需要成为管理员才能更改它。

要执行您正在寻找的操作,请完全不要绑定(bind)到端口 0。而是绑定(bind)到特定的所需端口,如果它不可用,则 bind() 将失败,您可以通过使用不同的端口再次调用 bind() 来处理错误,根据需要重复,直到绑定(bind)成功或您已用完所需端口列表。

关于sockets - bind() - 如何在同一个套接字上多次调用 bind(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43331106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com