MCPcopy Create free account
hub / github.com/LagrangeDev/LagrangeGo / initServers

Method initServers

client/network.go:73–112  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

71}
72
73func (c *QQClient) initServers() {
74 adds, err := net.LookupIP("msfwifi.3g.qq.com") // host servers
75 if err == nil && len(adds) > 0 {
76 var hostAddrs []netip.AddrPort
77 for _, addr := range adds {
78 ip, ok := netip.AddrFromSlice(addr.To4())
79 if ok {
80 hostAddrs = append(hostAddrs, netip.AddrPortFrom(ip, 8080))
81 }
82 }
83 c.servers = append(hostAddrs, c.servers...)
84 }
85 if len(c.servers) == 0 {
86 c.servers = []netip.AddrPort{ // default servers
87 netip.AddrPortFrom(netip.AddrFrom4([4]byte{43, 135, 106, 161}), 8080),
88 netip.AddrPortFrom(netip.AddrFrom4([4]byte{43, 154, 240, 13}), 8080),
89 }
90 }
91 pings := make([]int64, len(c.servers))
92 wg := sync.WaitGroup{}
93 wg.Add(len(c.servers))
94 for i := range c.servers {
95 go func(index int) {
96 defer wg.Done()
97 p, err := qualityTest(c.servers[index].String())
98 if err != nil {
99 pings[index] = 9999
100 return
101 }
102 pings[index] = p
103 }(i)
104 }
105 wg.Wait()
106 sort.Slice(c.servers, func(i, j int) bool {
107 return pings[i] < pings[j]
108 })
109 if len(c.servers) > 3 {
110 c.servers = c.servers[0 : len(c.servers)/2] // 保留ping值中位数以上的server
111 }
112}
113
114// connect 连接到 QQClient.servers 中的服务器
115func (c *QQClient) connect() error {

Callers

nothing calls this directly

Calls 2

qualityTestFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected