c - 搜索并连接到本地服务器(C 语言编程)

标签 c sockets find

我正在用 C 语言进行一些套接字编程,我在本地网络上有一台服务器和许多客户端。我希望客户端自己在网络上查找(搜索)服务器(即不必指定服务器地址)并连接到它。客户端和服务器之间的协议(protocol)应该是TCP。

我在网上搜索了一段时间,想找到解决这个问题的好方法,但还没有找到。

对于我将如何解决这个问题的任何建议,我们将不胜感激。

最佳答案

客户端连接到游戏服务器需要IP和端口号。但是,如果服务器的 IP 地址不可用,则可以通过以下方式达成“妥协”:

  • 使用主机名连接到服务器,您可以使用gethostbyname() 来解析主机名并获取IP 地址。如果服务器的 IP 未知或不是静态的,这应该可以解决问题。
  • 已知 IP 上运行一个进程,它可以为您提供事件服务器列表。
  • 让客户端扫描特定范围的 IP 地址,而不是尝试连接到单个 IP(这不是一个好主意,但在 LAN 上应该可行).
  • 让您的服务器以固定的时间间隔向当前子网上的所有主机广播数据包(比如 UDP 数据报)(同样不是一个好主意,会导致不必要的网络流量)。

还可以采用包含上述多个方法的混合方法,例如,尝试通过主机名连接,如果失败,则回退到连接到具有事件服务器列表的已知 IP 等.

关于c - 搜索并连接到本地服务器(C 语言编程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9482275/

相关文章:

c - 用C语言中的多个字符替换字符串中的一个字符

c - 枚举C,全局变量错误: variable has initializer but incomplete type

node.js - time_wait 过多的 Node 应用程序

python - netcat 的 -q 选项到底有什么作用?

bash - 如何有效地列出正好有 `n` 行的文件?

MATLAB:我想根据向量中的阈值对矩阵进行阈值处理,而无需 for 循环。可能的?

c - 使用 execvp 声明范围错误

c - 如何在c编程中从文本文件读取数据到数组结构?

node.js - 使用 socket.io-redis 和 RedisToGo 在 Heroku 上扩展到 2+ dynos

regex - 在 Visual Studio 中使用正则表达式查找并替换特定字符串中的字符串