我正在开发一个小型的Linux套接字项目。目标是让多个服务器(即1,2,3,4,5)监听来自其各自客户端的send
get
和ACK
个数据包。我目前正在尝试实现路由表协议,其中2个服务器(A,B)交换它们的路由表(包含各自客户端的向量,服务器名称和跳数)。我遇到的问题是将套接字绑定到B的外部地址,反之亦然。根据我的阅读,除了某些情况外,你不会绑定除本地地址以外的任何内容。我想知道的是,如何知道每台服务器的(静态)IP地址,从一台服务器到另一台服务器发送UDP数据包?
答案 0 :(得分:1)
我想知道的是如何从一个发送UDP数据包 服务器到另一个知道每个服务器的(静态)IP地址?
简短的回答是,你做不到。至少在因特网上,只有单播被广泛支持,这意味着为了将UDP数据包发送到另一台机器,你需要知道它的IP地址(不知何故)。
答案越长:您经常需要做的第一件事就是发现目标机器的IP地址。这可能是让用户手动输入IP地址列表,或者如果目标计算机位于同一LAN上,您可以通过让程序发出广播或多播UDP查询来编程自动发现它们的机制包。确保在同一局域网上运行的程序的任何实例接收该数据包并通过发回响应UDP数据包(响应可以通过单播或多播或广播,您的选择发送)来响应,然后您的查询发起计算机可以从收到的响应中知道您的程序目前还在运行哪些其他IP地址。
请注意,许多计算机和网络设备默认运行拒绝传入UDP数据包的防火墙,因此,如果数据包似乎没有通过,则可能是原因。