C 创建随机可用端口
我正在用C编写一个程序,其中服务器监听一个已知的端口,等待客户端连接,然后创建一个随机端口供客户端使用,并将此端口号发送回客户端。我的主要困难是如何创建“随机”端口。我是否应该使用srand并创建一个随机的4位端口才是可用范围?还是有更好的方法?我知道如果我使用端口0,将为我选择一个端口,但这里的问题是,我认为我无法“获取/查看”端口的实际值,以便将此端口号发送回客户端C 创建随机可用端口,c,networking,network-programming,C,Networking,Network Programming,我正在用C编写一个程序,其中服务器监听一个已知的端口,等待客户端连接,然后创建一个随机端口供客户端使用,并将此端口号发送回客户端。我的主要困难是如何创建“随机”端口。我是否应该使用srand并创建一个随机的4位端口才是可用范围?还是有更好的方法?我知道如果我使用端口0,将为我选择一个端口,但这里的问题是,我认为我无法“获取/查看”端口的实际值,以便将此端口号发送回客户端 谢谢…检查一个随机的4位端口,以确保它没有被使用,这样做是可以的 从技术上讲,这听起来像是为了增加安全性(某种原始的端口敲击例
谢谢…检查一个随机的4位端口,以确保它没有被使用,这样做是可以的
从技术上讲,这听起来像是为了增加安全性(某种原始的端口敲击例程)而实现的?值得一提的是,这种方法通常不太安全。它还对一次可以服务的客户机数量施加了一些人为的限制,实际上在服务器上增加了不必要的负载。为什么不只监听所有客户端的一个已知端口?检查一个随机的4位端口,以确保它没有被使用,就可以了
从技术上讲,这听起来像是为了增加安全性(某种原始的端口敲击例程)而实现的?值得一提的是,这种方法通常不太安全。它还对一次可以服务的客户机数量施加了一些人为的限制,实际上在服务器上增加了不必要的负载。为什么不在所有客户端的一个已知端口上侦听呢?我猜TCP考虑到了您对侦听和操作系统自动分配端口的描述。在这种情况下,你不需要担心。一旦你接受了TCP连接,两边的操作系统就会处理好你要做的所有事情,剩下的就是一个可以工作的连接,随时可以使用。除非你有特殊的理由自己做这些事情,否则它已经为你做了。我猜TCP考虑到了你对监听和操作系统自动端口分配的描述。在这种情况下,你不需要担心。一旦你接受了TCP连接,两边的操作系统就会处理好你要做的所有事情,剩下的就是一个可以工作的连接,随时可以使用。除非您有特殊的理由自己执行这些操作,否则它已经为您完成了。绑定端口0是解决方案。它提供了一个任意端口,而不是随机端口,但这是许多应用程序所做的(例如FTP等)
绑定后,您可以使用
getsockname
确定您使用的端口。绑定端口0是解决方案。它提供了一个任意端口,而不是随机端口,但这是许多应用程序所做的(例如FTP等)
绑定后,您可以使用
getsockname
确定您获得的端口。您要做的是bind()
将端口设置为0。系统将分配一个。然后使用getsockname()
查找系统分配的端口。将其发送回客户机。这样就不存在争用条件,您可以按照任何系统规则进行端口分配。您要做的是bind()
将端口设置为0。系统将分配一个。然后使用getsockname()
查找系统分配的端口。将其发送回客户机。这样就不存在竞争条件,您可以遵循任何端口分配的系统规则。“Internet分配号码管理局(IANA)建议动态或专用端口的范围为49152到65535。”“Internet分配号码管理局(IANA)建议动态或专用端口的范围为49152到65535。”