Answers:
对于具有LAN玩法的游戏,标准操作是让客户端将广播数据包发送到发现服务器。(客户端发送广播,服务器发送直接答复给客户端)
通常,客户端将发送三到五条广播消息,每条消息间隔大约一秒钟,然后,如果在这段时间内没有收到任何答复,则它将决定没有服务器。发送多个数据包会使服务发现的数据包丢失容忍度更高(尽管这在LAN上很少见),而且它们之间的时间间隔使它们不会过多地干扰其他网络流量。
(据我所知)没有人会执行您的选择2,因为这会降低LAN的性能(或者,如果您错开连接尝试,则将花费相当长的时间)。
但是,为了应对广播被本地LAN过滤的情况(这很不常见,但并非闻所未闻),大多数游戏将允许玩家直接输入要连接的IP地址。这样,处于这种情况的播放器就可以连接到已知服务器,即使他们无法广播也无法自动找到它。
对于通过Internet进行的游戏,客户端会将直接请求发送到静态元服务器,该服务器将返回已知当前服务器实例的地址。同样,服务器会与该元服务器联系,以通知它们自己的位置,以便可以将客户端定向到它们。但是,由于NAT的复杂性,这种方法通常不适用于LAN内托管的服务器。这就是为什么这种方法通常不用于LAN游戏的原因。
补充说明:网络游戏通常会先联系点服务器。点服务器告诉游戏它可以在哪个地址上找到元服务器,元服务器将告诉它可以在哪里找到服务器。点服务器通常(尽管不一定总是)实现为简单的Web服务器,并且是该系统中唯一具有硬编码到游戏中的地址的部分。这使游戏开发人员只需更新点服务器返回的地址,即可根据需要将其元服务器从一台计算机移动到另一台计算机。通过让点服务器根据服务器负载或地理位置,将用户发送到不同的元服务器,它还可用于实现负载平衡或区域切换的简单形式。