如何在python中使用套接字客户端托管和连接到套接字服务器?
没有更多的问题或细节,因为我没有线索。
发布于 2021-07-30 20:05:38
不是以DHCP或DDNS专家的身份发言,而是一个基本熟悉的人-
让我先描述一下你的问题似乎是什么。你有一台服务器...它有一个特定的IP地址。而且它有一个域名--比如说www.myDomain.com。DNS提供该域名到关联IP地址的映射。这样当你在浏览器中输入www.myDomain.com的时候...会向您的本地DNS服务器发送一条消息,询问“此名称www.myDomain.com实际映射到什么IP”?在该问题得到解决后,您的网络请求将被发送到位于该IP的实际服务器。
使用DHCP...您的服务器IP不是静态的。它会改变--它会频繁地改变。您的IP有一定的租期,超过一定的租期后,您的IP将到期。DHCP背后的思想是动态分配IP地址-它允许设备在不进行手动配置的情况下连接/断开网络,还可以通过重复使用IP地址来节省IP地址。但由于您的服务器IP地址经常更改,这意味着需要使用从您的域名- www.myDomain.com -到新IP地址的新映射来更新DNS服务器。
您必须更新DNS服务器,以便客户端知道将请求发送到哪个IP地址。这就是套接字部分--客户端和服务器在它们之间维护一个网络连接。套接字是该网络连接的应用层接口。套接字接口需要正确的IP地址。它与DNS服务器对接以解析域名和IP地址。
这就是DDNS。DDNS是DNS的扩展,以适应DHCP协议。旧的DNS系统不足以处理来自DHCP的这些频繁的动态IP更新。
因此,您可以从阅读什么是DDNS开始。维基百科的文章是一个很好的起点。如果你真的迷路了,那么首先学习什么是DHCP和DNS。
您将需要发送一个更新请求到您的网络DDNS服务器每次您的IP更改由于DHCP更新它。这种情况经常发生。因此,您需要检测您的IP何时发生更改。可能会有一些操作系统事件,您可以在每次发生这种情况时设置和触发。您可以只编写一个程序来轮询-比方说一个每秒唤醒并检查IP地址是否已更改的后台进程。因此,您需要查询您的操作系统的IP地址,并将其与以前的地址进行比较。
一旦您知道IP地址已更改...您可以向DDNS发送消息进行更新。有两种DDNS标准和专有系统,你需要弄清楚你的DDNS服务器需要哪种类型。很可能是标准的,但谁知道呢。
所以他们有发送这些自动IP更新的软件。而不是自己写这篇文章,你可以考虑使用一些软件来做这件事。
要使用Python发送更新消息...请记住,DDNS需要特定的消息格式来进行更新。您可以使用Python的dns包来传达这些更新。这里有一个关于Python & DDNS的相关帖子,您可以从中获得一个概述:Dynamic DNS updates using Python's dns.update returning rcode REFUSED
在该线程中,它们设置要发送到DDNS的更新消息。该消息具有特定的格式,因此这将要求您阅读有关DDNS的内容。
这超出了我的知识范围--但根据您的应用程序,您可以从服务器向您的客户端发送一条消息,告诉它们与服务器的新IP建立新的连接。暂时绕过DNS。这可能会加速客户端获取新IP的过程,因为有时需要一段时间才能更新DDNS。这只是我的猜测--你必须辛勤工作,让它工作得很好。如果它是一个web应用程序..这将不起作用,浏览器通过DNS,您将不得不依赖DNS更新。但是如果它是一个IP被硬编码的应用程序,比如一个有专用服务器的移动应用程序或者别的什么。你可以试一试。老实说,我甚至不确定这是否可行,它超出了我的领域,但这只是一个想法-看看是否有可能在您的用例中绕过DNS。
对于严重的应用,更好的选择通常是从ISP购买静态IP。那么你就不必为这些而烦恼了。您的服务器IP不会更改。
https://stackoverflow.com/questions/68596397
复制相似问题