- 论坛徽章:
- 4
|
7000-8000不就是一个端口列表吗?
char port_list[1000]; 谁开谁没开, 随着bind/close去设置port_list不就行了? 记得setsockopt SO_REUSEADDR, 否则TIMEWAIT的是没法重用的.
但我必须给楼主提个醒:
1, bind(0)是可以由内核自动绑定到一个空闲port的, 但无法满足你的7000-8000需求.
2, 我知道你想做UDP server, 对于每一个client分配一个独立的udp socket(port)与client通信, 并且有一个唯一的UDP PORT作为类似监听socket的工作.
所以,我必须提醒你,当你是用一个未bind的udp socket向对端发送第一个包时, 内核就帮你绑定了一个port, 所以你需要考虑7000-8000是否是必要的需求.
再另外, udp一样可以connect, 对于udp是不发生任何实际网络传输的, 只是做一个本地socket的remote addr限制, 但实际有一个效果就是, 不需要发送任何包,
就可以既限制remote addr(只能发给connect的remote, 只能接受remote发来的包), 又可以由内核帮你绑定一个端口. |
|