情况:我需要从一些空闲端口使用UDP从客户端广播,然后接受来自端口上服务器的客户端上的tcp连接,但数量相同,但是TCP。这就是为什么我需要在广播之前监听(并绑定)到这个端口。端口不能是const,因为我可以在一台机器上运行多个客户端。 所以这里有一些问题可以帮助我让这种情况更加清晰:
1)如果我从unbinded UDP套接字发送sendto,是否绑定到任何空闲端口,所有下一个sendto消息将从此端口发送,或者每次选择端口用于新消息?
2)我可以要求系统为我保留一些免费端口吗? (我需要为UDP和TCP连接保留两个具有相同编号的端口)
3)我确信有一种已知的方法来处理这些情况,它是什么?
答案 0 :(得分:1)
1)如果我从unbinded UDP套接字发送sendto,它是否绑定到任何空闲端口,所有下一个sendto消息将从此端口发送
是
或每次为新邮件选择端口?
没有
2)我可以要求系统为我保留一些免费端口吗? (我需要为UDP和TCP连接保留两个具有相同编号的端口)
发生自动绑定时会发生这种情况。您可以通过绑定到端口号零来显式执行,但这不是必需的。它也不保证您可以将UDP和TCP绑定到相同的端口号。
3)我确信有一种已知的方法来处理这些情况,它是什么?
你找到了。让自动绑定发生。
答案 1 :(得分:0)
我在stackoverflow上找到了一些答案
0
端口,指定它为struct semaddr_in
。这将允许您为您的连接类型获取未使用的端口。它没有被定义为免费用于其他类型的连接。请参阅Can TCP and UDP sockets use the same port?
listen
sendto
使用该端口
醇>